lib/command_duration: dynamic clock hand

Calculate the position (from 1 to 12) of the hour hand on the clock emoji used for the _command_duration string.

Expressly handle COMMAND_DURATION_COLOR as blank when undefined.
pull/1906/head
John D Pell 2022-03-04 12:39:58 -08:00
parent ad1d73aaa1
commit 09e8c25b64
1 changed files with 9 additions and 3 deletions

View File

@ -9,7 +9,7 @@ fi
COMMAND_DURATION_START_TIME=
COMMAND_DURATION_ICON=${COMMAND_DURATION_ICON:-'  '}
COMMAND_DURATION_ICON=${COMMAND_DURATION_ICON:-'  '} 🕘
COMMAND_DURATION_MIN_SECONDS=${COMMAND_DURATION_MIN_SECONDS:-'1'}
_command_duration_pre_exec() {
@ -18,6 +18,11 @@ _command_duration_pre_exec() {
COMMAND_DURATION_START_TIME="$(date "+%s").${command_nano_now}"
}
function _dynamic_clock_icon {
local -i clock_hand=$(((${1:-${SECONDS}} % 12) + 90))
printf -v 'COMMAND_DURATION_ICON' '%b' "\xf0\x9f\x95\x$clock_hand"
}
_command_duration() {
local command_duration command_start current_time
local minutes seconds deciseconds
@ -54,10 +59,11 @@ _command_duration() {
seconds=$((command_duration % 60))
fi
_dynamic_clock_icon
if ((minutes > 0)); then
printf "%s%s%dm %ds" "$COMMAND_DURATION_ICON" "$COMMAND_DURATION_COLOR" "$minutes" "$seconds"
printf "%s%s%dm %ds" "${COMMAND_DURATION_ICON:-}" "${COMMAND_DURATION_COLOR:-}" "$minutes" "$seconds"
elif ((seconds >= COMMAND_DURATION_MIN_SECONDS)); then
printf "%s%s%d.%01ds" "$COMMAND_DURATION_ICON" "$COMMAND_DURATION_COLOR" "$seconds" "$deciseconds"
printf "%s%s%d.%01ds" "${COMMAND_DURATION_ICON:-}" "${COMMAND_DURATION_COLOR:-}" "$seconds" "$deciseconds"
fi
}