v1.1.5 - added additional spinner styles

This commit is contained in:
pyr0ball 2023-03-08 10:39:12 -08:00
parent e3f8e5b219
commit 34698289a4
2 changed files with 85 additions and 26 deletions

18
demo.sh Normal file → Executable file
View 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
spin "sleep 3"
done done
endspin

View file

@ -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() {