bug: Use en_US when fetching EPOCHREALTIME
Isolates fetching of EPOCHREALTIME to a function which sets LC_ALL=en_US.UTF-8. This ensures that the value is in decimal format, regardless of runtime locale. bug: Hide duration when no command executed
This commit is contained in:
@@ -2,12 +2,24 @@
|
||||
#
|
||||
# Functions for measuring and reporting how long a command takes to run.
|
||||
|
||||
: "${COMMAND_DURATION_START_SECONDS:=${EPOCHREALTIME:-$SECONDS}}"
|
||||
# Get shell duration in decimal format regardless of runtime locale.
|
||||
# Notice: This function runs as a sub-shell - notice '(' vs '{'.
|
||||
function _shell_duration_en() (
|
||||
# DFARREL You would think LC_NUMERIC would do it, but not working in my local
|
||||
LC_ALL='en_US.UTF-8'
|
||||
printf "%s" "${EPOCHREALTIME:-$SECONDS}"
|
||||
)
|
||||
|
||||
: "${COMMAND_DURATION_START_SECONDS:=$(_shell_duration_en)}"
|
||||
: "${COMMAND_DURATION_ICON:=🕘}"
|
||||
: "${COMMAND_DURATION_MIN_SECONDS:=1}"
|
||||
|
||||
function _command_duration_pre_exec() {
|
||||
COMMAND_DURATION_START_SECONDS="${EPOCHREALTIME:-$SECONDS}"
|
||||
COMMAND_DURATION_START_SECONDS="$(_shell_duration_en)"
|
||||
}
|
||||
|
||||
function _command_duration_pre_cmd() {
|
||||
COMMAND_DURATION_START_SECONDS=""
|
||||
}
|
||||
|
||||
function _dynamic_clock_icon {
|
||||
@@ -20,13 +32,15 @@ function _dynamic_clock_icon {
|
||||
|
||||
function _command_duration() {
|
||||
[[ -n "${BASH_IT_COMMAND_DURATION:-}" ]] || return
|
||||
[[ -n "${COMMAND_DURATION_START_SECONDS:-}" ]] || return
|
||||
|
||||
local command_duration=0 command_start="${COMMAND_DURATION_START_SECONDS:-0}"
|
||||
local -i minutes=0 seconds=0 deciseconds=0
|
||||
local -i command_start_seconds="${command_start%.*}"
|
||||
local -i command_start_deciseconds=$((10#${command_start##*.}))
|
||||
command_start_deciseconds="${command_start_deciseconds:0:1}"
|
||||
local current_time="${EPOCHREALTIME:-$SECONDS}"
|
||||
local current_time
|
||||
current_time="$(_shell_duration_en)"
|
||||
local -i current_time_seconds="${current_time%.*}"
|
||||
local -i current_time_deciseconds="$((10#${current_time##*.}))"
|
||||
current_time_deciseconds="${current_time_deciseconds:0:1}"
|
||||
@@ -59,3 +73,4 @@ function _command_duration() {
|
||||
}
|
||||
|
||||
_bash_it_library_finalize_hook+=("safe_append_preexec '_command_duration_pre_exec'")
|
||||
_bash_it_library_finalize_hook+=("safe_append_prompt_command '_command_duration_pre_cmd'")
|
||||
|
||||
Reference in New Issue
Block a user