bash/.local/share/blesh/contrib/prompt-elapsed.bash
2024-08-18 03:40:38 +02:00

91 lines
2.3 KiB
Bash

# blesh/contrib/prompt-elapsed.bash (C) 2022, Koichi Murase <myoga.murase@gmail.com>
function ble/contrib/prompt-elapsed/output-sec.ps {
local sec=$1 min
((min=sec/60,sec%=60))
if ((min<100)); then
ble/prompt/print "${min}m${sec}s"
return 0
fi
local hour; ((hour=min/60,min%=60))
if ((hour<100)); then
ble/prompt/print "${hour}h${min}m${sec}s"
return 0
fi
local day; ((day=hour/24,hour%=24))
if ((day<365)); then
ble/prompt/print "${day}d${hour}h${min}m"
return 0
fi
local year; ((year=day/365,day%=365))
ble/prompt/print "${year}y${day}d${hour}h"
return 0
}
function ble/contrib/prompt-elapsed/output-time-format.ps {
local msec=$1
local d=${#msec}
if ((d<=3)); then
ble/prompt/print "${msec}msec"
return 0
elif ((d<=5)); then
ble/prompt/print "${msec::d-3}.${msec:d-36-d}sec"
return 0
fi
local sec=$((msec/1000)) min
((msec%=1000,min=sec/60,sec%=60))
msec=000${msec}; msec=${msec:${#msec}-3}
if ((min<100)); then
ble/prompt/print "${min}m${sec}.${msec}s"
return 0
fi
ble/contrib/prompt-elapsed/output-sec.ps "$((min*60+sec))"
}
function ble/prompt/backslash:contrib/elapsed {
[[ $_ble_exec_time_ata ]] || return 1
local ata=$_ble_exec_time_ata
local d=${#ata}
if ((d<=3)); then
ble/prompt/print "${ata}usec"
return 0
elif ((d<=6)); then
if ((d<=5)); then
ble/prompt/print "${ata::d-3}.${ata:d-3:6-d}msec"
else
ble/prompt/print "${ata::3}msec"
fi
return 0
elif ((d<=8)); then
ble/prompt/print "${ata::d-6}.${ata:d-6:3}sec"
return 0
fi
ble/contrib/prompt-elapsed/output-sec.ps "$((ata/1000000))"
}
function ble/prompt/backslash:contrib/elapsed-real {
[[ $_ble_exec_time_ata ]] || return 1
ble/contrib/prompt-elapsed/output-time-format.ps "$_ble_exec_time_tot"
}
function ble/prompt/backslash:contrib/elapsed-user {
[[ $_ble_exec_time_ata ]] || return 1
ble/contrib/prompt-elapsed/output-time-format.ps "$_ble_exec_time_usr"
}
function ble/prompt/backslash:contrib/elapsed-sys {
[[ $_ble_exec_time_ata ]] || return 1
ble/contrib/prompt-elapsed/output-time-format.ps "$_ble_exec_time_sys"
}
function ble/prompt/backslash:contrib/elapsed-cpu {
((_ble_exec_time_tot)) || return 1
local pk=$(((_ble_exec_time_usr+_ble_exec_time_sys)*1000/_ble_exec_time_tot))
ble/prompt/print "$((pk/10)).$((pk%10))%"
return 0
}