82 lines
2.1 KiB
Bash
82 lines
2.1 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
function _spinner() {
|
||
|
# $1 start/stop
|
||
|
#
|
||
|
# on start: $2 display message
|
||
|
# on stop : $2 process exit status
|
||
|
# $3 spinner function pid (supplied from stop_spinner)
|
||
|
|
||
|
local on_success="DONE"
|
||
|
local on_fail="FAIL"
|
||
|
local white="\e[1;37m"
|
||
|
local green="\e[1;32m"
|
||
|
local red="\e[1;31m"
|
||
|
local nc="\e[0m"
|
||
|
|
||
|
case $1 in
|
||
|
start)
|
||
|
# calculate the column where spinner and status msg will be displayed
|
||
|
# shellcheck disable=SC2219
|
||
|
let column=$(tput cols)-${#2}-60
|
||
|
# display message and position the cursor in $column column
|
||
|
echo -ne "${2}"
|
||
|
printf "%${column}s"
|
||
|
|
||
|
# start spinner
|
||
|
i=1
|
||
|
sp='\|/-'
|
||
|
delay=${SPINNER_DELAY:-0.15}
|
||
|
|
||
|
while :
|
||
|
do
|
||
|
# shellcheck disable=SC2059
|
||
|
printf "\b${sp:i++%${#sp}:1}"
|
||
|
sleep "$delay"
|
||
|
done
|
||
|
;;
|
||
|
stop)
|
||
|
if [[ -z ${3} ]]; then
|
||
|
echo "spinner is not running.."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
kill "$3" > /dev/null 2>&1
|
||
|
|
||
|
# inform the user uppon success or failure
|
||
|
echo -en "\b["
|
||
|
if [[ $2 -eq 0 ]]; then
|
||
|
echo -en "${green}${on_success}${nc}"
|
||
|
else
|
||
|
echo -en "${red}${on_fail}${nc}"
|
||
|
fi
|
||
|
echo -e "]"
|
||
|
;;
|
||
|
*)
|
||
|
echo "invalid argument, try {start/stop}"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
function start_spinner {
|
||
|
# $1 : msg to display
|
||
|
_spinner "start" "${1}" &
|
||
|
# set global spinner pid
|
||
|
_sp_pid=$!
|
||
|
disown
|
||
|
}
|
||
|
|
||
|
function stop_spinner {
|
||
|
# $1 : command exit status
|
||
|
_spinner "stop" $1 $_sp_pid
|
||
|
unset _sp_pid
|
||
|
}
|
||
|
|
||
|
echo '##############################################################################################'
|
||
|
echo '# Starting AmBiTo build...'
|
||
|
echo '##############################################################################################'
|
||
|
echo
|
||
|
start_spinner "Cleaning up..."
|
||
|
flutter clean >/dev/null 2>&1
|
||
|
stop_spinner "OK"
|