2022-01-15 19:00:35 +09:00
|
|
|
#! bash oh-my-bash.module
|
2019-01-23 03:05:32 -08:00
|
|
|
#
|
|
|
|
# Move a process to background and track its progress in a smoothier way.
|
|
|
|
# Could be use if $TERM not set.
|
|
|
|
#
|
|
|
|
# Examples
|
|
|
|
#
|
2022-01-19 17:57:09 +09:00
|
|
|
# echo -ne "${_omb_term_red}I am running..."
|
2019-01-23 03:05:32 -08:00
|
|
|
# ( my_long_task_running ) &
|
|
|
|
# spinner
|
2022-01-19 17:57:09 +09:00
|
|
|
# echo -ne "...${_omb_term_reset} ${_omb_term_green}DONE${_omb_term_reset}"
|
2019-01-23 03:05:32 -08:00
|
|
|
#
|
|
|
|
|
|
|
|
# This spinner is used when there is a terminal.
|
|
|
|
term_spinner() {
|
|
|
|
local pid=$!
|
|
|
|
local delay=0.1
|
|
|
|
local spinstr='|/-\'
|
|
|
|
while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
|
|
|
|
local temp=${spinstr#?}
|
|
|
|
printf " [%c] " "$spinstr"
|
|
|
|
local spinstr=$temp${spinstr%"$temp"}
|
|
|
|
sleep $delay
|
|
|
|
printf "\b\b\b\b\b\b"
|
|
|
|
done
|
|
|
|
printf " \b\b\b\b"
|
|
|
|
}
|
|
|
|
|
|
|
|
no_term_spinner() {
|
|
|
|
local pid=$!
|
|
|
|
local delay=0.1
|
|
|
|
local spinstr='|/-\'
|
|
|
|
while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
|
|
|
|
printf "."
|
|
|
|
sleep 2
|
|
|
|
done
|
|
|
|
echo " ✓ "
|
|
|
|
}
|
|
|
|
|
|
|
|
spinner() {
|
|
|
|
if [[ -z "$TERM" ]]; then
|
|
|
|
no_term_spinner
|
|
|
|
else
|
|
|
|
term_spinner
|
|
|
|
fi
|
|
|
|
}
|