v1.1.5 - added additional spinner styles
This commit is contained in:
parent
e3f8e5b219
commit
34698289a4
2 changed files with 85 additions and 26 deletions
20
demo.sh
Normal file → Executable file
20
demo.sh
Normal file → Executable file
|
|
@ -1,11 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Initial Vars
|
# Initial Vars
|
||||||
VERSION=1.0.0
|
VERSION=1.1.0
|
||||||
scriptname="${0##*/}"
|
scriptname="${0##*/}"
|
||||||
rundir="${0%/*}"
|
rundir="${0%/*}"
|
||||||
runuser="$(whoami)"
|
runuser="$(whoami)"
|
||||||
pretty_date="$(date +%Y-%m-%d_%H-%M-%S)"
|
|
||||||
|
|
||||||
source ${rundir}/functions
|
source ${rundir}/functions
|
||||||
|
|
||||||
|
|
@ -45,6 +44,8 @@ boxborder \
|
||||||
"${red}${unl}Red + Underline${dfl}" \
|
"${red}${unl}Red + Underline${dfl}" \
|
||||||
"${red}${inv}Red + Inverted${dfl}"
|
"${red}${inv}Red + Inverted${dfl}"
|
||||||
# boxborder
|
# boxborder
|
||||||
|
|
||||||
|
# demo different box border types
|
||||||
echo ""
|
echo ""
|
||||||
boxborder "${lyl}Bounding Boxes${dfl}"
|
boxborder "${lyl}Bounding Boxes${dfl}"
|
||||||
box-double
|
box-double
|
||||||
|
|
@ -60,6 +61,7 @@ boxborder "Single Character"
|
||||||
box-norm
|
box-norm
|
||||||
boxborder "Normal"
|
boxborder "Normal"
|
||||||
|
|
||||||
|
# Demo interactive menus
|
||||||
boxborder \
|
boxborder \
|
||||||
"${lyl}Keyboard Interactive Menus${dfl}"\
|
"${lyl}Keyboard Interactive Menus${dfl}"\
|
||||||
$(boxseparator) \
|
$(boxseparator) \
|
||||||
|
|
@ -80,7 +82,7 @@ choice=$?
|
||||||
echo "Choosen index = $choice"
|
echo "Choosen index = $choice"
|
||||||
echo " value = ${options[$choice]}"
|
echo " value = ${options[$choice]}"
|
||||||
|
|
||||||
# Examples for above select_opt
|
# Examples for select_opt
|
||||||
case `select_opt "Yes" "No" "Cancel"` in
|
case `select_opt "Yes" "No" "Cancel"` in
|
||||||
0) echo "selected Yes";;
|
0) echo "selected Yes";;
|
||||||
1) echo "selected No";;
|
1) echo "selected No";;
|
||||||
|
|
@ -106,9 +108,9 @@ for option in "${my_options[@]}"; do
|
||||||
((idx++))
|
((idx++))
|
||||||
done
|
done
|
||||||
|
|
||||||
# Example usage for above:
|
# Spinner
|
||||||
until $(sleep 5); do
|
for i in {1..11} ; do
|
||||||
spin
|
boxborder "spinner$i demo"
|
||||||
sleep 0.2
|
set_spinner spinner$i
|
||||||
done
|
spin "sleep 3"
|
||||||
endspin
|
done
|
||||||
91
functions
91
functions
|
|
@ -2,7 +2,7 @@
|
||||||
# pyr0ball script functions library
|
# pyr0ball script functions library
|
||||||
|
|
||||||
# Initial Vars
|
# Initial Vars
|
||||||
functionsrev=1.1.4
|
functionsrev=1.1.5
|
||||||
scriptname="${0##*/}"
|
scriptname="${0##*/}"
|
||||||
rundir="${0%/*}"
|
rundir="${0%/*}"
|
||||||
rundir_absolute=$(cd `dirname $0` && pwd)
|
rundir_absolute=$(cd `dirname $0` && pwd)
|
||||||
|
|
@ -10,6 +10,12 @@ runuser="$(whoami)"
|
||||||
pretty_date="$(date +%Y-%m-%d_%H-%M-%S)"
|
pretty_date="$(date +%Y-%m-%d_%H-%M-%S)"
|
||||||
short_date="$(date +%Y-%m-%d)"
|
short_date="$(date +%Y-%m-%d)"
|
||||||
|
|
||||||
|
# return any cursor mods to normal on exit
|
||||||
|
cleanup(){
|
||||||
|
tput cnorm
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
# Escape characters (if your shell uses a different one, you can modify it here)
|
# Escape characters (if your shell uses a different one, you can modify it here)
|
||||||
# By default this is using the usual bash escape code
|
# By default this is using the usual bash escape code
|
||||||
ESC=$( printf '\033')
|
ESC=$( printf '\033')
|
||||||
|
|
@ -556,24 +562,75 @@ ctrl_c(){
|
||||||
|
|
||||||
# Function for spinner status
|
# Function for spinner status
|
||||||
# usage: spin "command [args]"
|
# usage: spin "command [args]"
|
||||||
spin() {
|
set_spinner() {
|
||||||
sp="/-\|"
|
case $1 in
|
||||||
sc=0
|
spinner1)
|
||||||
$@ &
|
FRAME="⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏"
|
||||||
_PID=&!
|
FRAME_INTERVAL=0.05
|
||||||
while [ -d /proc/$_PID ] ; do
|
;;
|
||||||
printf "\b${sp:sc++:1}"
|
spinner2)
|
||||||
((sc==${#sp})) && sc=0
|
FRAME="-\|/"
|
||||||
done
|
FRAME_INTERVAL=0.1
|
||||||
printf "\r%s\n" "$@"
|
;;
|
||||||
|
spinner3)
|
||||||
|
FRAME="◐◓◑◒"
|
||||||
|
FRAME_INTERVAL=0.2
|
||||||
|
;;
|
||||||
|
spinner4)
|
||||||
|
FRAME=":(:|:):D"
|
||||||
|
FRAME_INTERVAL=0.5
|
||||||
|
;;
|
||||||
|
spinner5)
|
||||||
|
FRAME="◇◈◆◈"
|
||||||
|
FRAME_INTERVAL=0.2
|
||||||
|
;;
|
||||||
|
spinner6)
|
||||||
|
FRAME="⚬⚭⚮⚯⚮⚭"
|
||||||
|
FRAME_INTERVAL=0.2
|
||||||
|
;;
|
||||||
|
spinner7)
|
||||||
|
FRAME="░▒▓█▓▒"
|
||||||
|
FRAME_INTERVAL=0.25
|
||||||
|
;;
|
||||||
|
spinner8)
|
||||||
|
FRAME="☉◎◉◎☉"
|
||||||
|
FRAME_INTERVAL=0.1
|
||||||
|
;;
|
||||||
|
spinner9)
|
||||||
|
FRAME="♡♥❤♥♡"
|
||||||
|
FRAME_INTERVAL=0.15
|
||||||
|
;;
|
||||||
|
spinner10)
|
||||||
|
FRAME="✧☆★✪✲◌"
|
||||||
|
FRAME_INTERVAL=0.1
|
||||||
|
;;
|
||||||
|
spinner11)
|
||||||
|
FRAME="●◕☯◔◕"
|
||||||
|
FRAME_INTERVAL=0.25
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "No spinner is defined for $1"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# Example usage for above:
|
spin() {
|
||||||
# until work_done; do
|
tput civis
|
||||||
# spin
|
sc=0
|
||||||
# some_work ...
|
CMD=$@
|
||||||
# done
|
$CMD &
|
||||||
# endspin
|
_PID=$!
|
||||||
|
while [ -d /proc/$_PID ] ; do
|
||||||
|
for i in "${FRAME[@]}" ; do
|
||||||
|
printf "\b${FRAME:sc++:1}"
|
||||||
|
((sc==${#FRAME})) && sc=0
|
||||||
|
#echo -ne "\b${FRAME[$i]}"
|
||||||
|
sleep $FRAME_INTERVAL
|
||||||
|
done
|
||||||
|
done
|
||||||
|
printf "\r\n"
|
||||||
|
tput cnorm
|
||||||
|
}
|
||||||
|
|
||||||
# https://github.com/fearside/ProgressBar/blob/master/progressbar.sh
|
# https://github.com/fearside/ProgressBar/blob/master/progressbar.sh
|
||||||
progress-bar() {
|
progress-bar() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue