forked from lnfnunes/bash-progress-indicator
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspinner.sh
More file actions
82 lines (72 loc) · 1.58 KB
/
spinner.sh
File metadata and controls
82 lines (72 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/bash -e
declare -x FRAME
declare -x FRAME_INTERVAL
set_spinner() {
case $1 in
spinner1)
FRAME=("⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏")
FRAME_INTERVAL=0.1
;;
spinner2)
FRAME=("-" "\\" "|" "/")
FRAME_INTERVAL=0.25
;;
spinner3)
FRAME=("◐" "◓" "◑" "◒")
FRAME_INTERVAL=0.5
;;
spinner4)
FRAME=(":(" ":|" ":)" ":D")
FRAME_INTERVAL=0.5
;;
spinner5)
FRAME=("◇" "◈" "◆")
FRAME_INTERVAL=0.5
;;
spinner6)
FRAME=("⚬" "⚭" "⚮" "⚯")
FRAME_INTERVAL=0.25
;;
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
}
start() {
local step=0
tput civis -- invisible
while [ "$step" -lt "${#CMDS[@]}" ]; do
${CMDS[$step]} & pid=$!
while ps -p $pid &>/dev/null; do
echo -ne "\\r[ ] ${STEPS[$step]} ..."
for k in "${!FRAME[@]}"; do
echo -ne "\\r[ ${FRAME[k]} ]"
sleep $FRAME_INTERVAL
done
done
echo -ne "\\r[ ✔ ] ${STEPS[$step]}\\n"
step=$((step + 1))
done
tput cnorm -- normal
}
set_spinner "$1"