aboutsummaryrefslogtreecommitdiffstats
path: root/.config/init/helpers
diff options
context:
space:
mode:
Diffstat (limited to '.config/init/helpers')
-rw-r--r--.config/init/helpers77
1 files changed, 77 insertions, 0 deletions
diff --git a/.config/init/helpers b/.config/init/helpers
new file mode 100644
index 0000000..69963cb
--- /dev/null
+++ b/.config/init/helpers
@@ -0,0 +1,77 @@
+print-error() {
+ 1>&2 echo "\e[1;31merror:\e[0m $1"
+}
+
+abort() {
+ print-error $1
+ exit 1
+}
+
+wait-anim() {
+ [[ $#@ -ne 0 ]] && [[ $#@ -lt 4 ]] || return 1
+
+ local pidpat='^[1-9][0-9]*$'
+ local colourpat='^(black|light_black|red|light_red|green|light_green|yellow|light_yellow|blue|light_blue|magenta|light_magenta|cyan|light_cyan|white|light_white)$'
+
+ [[ $1 =~ $pidpat ]] || return 1
+ if [[ ! -z $3 ]]; then
+ [[ $3 =~ $colourpat ]] || return 1
+ fi
+
+ local message
+ local colour
+
+ [[ -z $2 ]] && message='waiting...' || message=$2
+ [[ -z $3 ]] && colour='yellow' || colour=$3
+
+ case $colour in
+ 'black') colour='\e[30m' ;;
+ 'light_black') colour='\e[1;30m' ;;
+ 'red') colour='\e[31m' ;;
+ 'light_red') colour='\e[1;31m' ;;
+ 'green') colour='\e[32m' ;;
+ 'light_green') colour='\e[1;32m' ;;
+ 'yellow') colour='\e[33m' ;;
+ 'light_yellow') colour='\e[1;33m' ;;
+ 'blue') colour='\e[34m' ;;
+ 'light_blue') colour='\e[1;34m' ;;
+ 'magenta') colour='\e[35m' ;;
+ 'light_magenta') colour='\e[1;35m' ;;
+ 'cyan') colour='\e[36m' ;;
+ 'light_cyan') colour='\e[1;36m' ;;
+ 'white') colour='\e[37m' ;;
+ 'light_white') colour='\e[1;37m' ;;
+ esac
+
+ local curframe
+ local frames
+
+ case $(($RANDOM % 7)) in
+ 0) frames=('▁' '▂' '▃' '▄' '▅' '▆' '▇' '█' '▇' '▆' '▅' '▄' '▃' '▂') ;;
+ 1) frames=(' ' '▖' '▚' '▝' ' ' '▘' '▞' '▗') ;;
+ 2) frames=('╀' '╂' '╁' '┼' '┽' '┿' '┾' '┼' '╁' '╂' '╀' '┼' '┾' '┿' '┽' '┼') ;;
+ 3) frames=('─' '└' '│' '┌' '─' '┐' '│' '┘') ;;
+ 4) frames=('.' '。' '×' ':' '*' '.' '°' '♪' '×' '♫' '°' '♡') ;;
+ 5) frames=(' ' ' ' '░' '░' '▒' '▒' '▓' '▓' '█' '█' '▓' '▓' '▒' '▒' '░' '░') ;;
+ 6) frames=('O' 'o' '.' 'o') ;;
+ esac
+
+ (while 2>/dev/null kill -0 $1; do
+ if [[ -z $curframe ]]; then
+ curframe=0
+ printf "\e[s"
+ else
+ printf "\e[u\e[K"
+ fi
+ printf "|\e[1;32m${frames[$(($curframe + 1))]}\e[0m| $colour$message\e[0m"
+ curframe=$(( ($curframe + 1) % $#frames ))
+ sleep .2
+ done) &
+
+ # trap "echo -n '\e[G\e[J\e[s'" SIGWINCH
+
+ wait $1
+ local r=$?
+ printf "\e[u\e[K"
+ return $r
+}