From cda3ce7be62bd74452a10d8a83055a7969b171db Mon Sep 17 00:00:00 2001 From: katherine Date: Fri, 21 Dec 2018 17:26:56 -0700 Subject: add time elapsed to progress-bar --- .config/init/helpers | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to '.config') diff --git a/.config/init/helpers b/.config/init/helpers index 1f2ed89..81859ec 100644 --- a/.config/init/helpers +++ b/.config/init/helpers @@ -55,21 +55,22 @@ progress-bar() { local i=0 local starttime=$EPOCHREALTIME local lasttime=$starttime - local thistime=$starttime + local thistime=$starttime local elapsed=0 while true; do + local now=$EPOCHREALTIME [[ $i -eq $count ]] && break local width=$COLUMNS - local statwidth=$(( ($#count * 2) + 20)) + local statwidth=$(( ($#count * 2) + 35)) local progwidth=$(($width - $statwidth - 3)) [[ $progwidth -gt 30 || $progwidth -le 1 ]] && progwidth=30 - if [[ $i -eq 0 || $elapsed -eq 0 ]]; then + if [[ $i -eq 0 ]]; then eta='??:??:??' else - local left=$(( ($count - $i) * ($elapsed / $i) - ($EPOCHREALTIME - $lasttime) )) + local left=$(( ($count - $i) * ($elapsed / $i) - ($now - $lasttime) )) if [[ $left -ge 86400 ]]; then eta=' days...' elif [[ $left -le 0 ]]; then @@ -79,21 +80,25 @@ progress-bar() { fi fi + local rt=$(($now - $starttime)) + [[ $rt -ge 86400 ]] && rt=' days...' \ + || rt=$(strftime '%H:%M:%S' ${$(( floor($rt + 802800) )):s/\./}) + local fpart="" local epart="" local progress=$(($i * $progwidth / $count)) repeat $progress fpart="$fpart#" - repeat $(($progwidth-$progress)) epart="$epart-" + repeat $(($progwidth - $progress)) epart="$epart-" printf \ - "\e[G\e[K$colour%s...\e[0m\n[%${#count}s/$count] [eta: $eta] [$fpart$epart]\e[J" \ + "\e[G\e[K$colour%s...\e[0m\n[%${#count}s/$count] [rt: $rt] [eta: $eta] [$fpart$epart]\e[J" \ $message \ $i \ read -t 0.2 \ - && thistime=$EPOCHREALTIME \ - && elapsed=$(($elapsed + $thistime - $lasttime)) \ - && lasttime=$EPOCHREALTIME \ + && thistime=$EPOCHREALTIME \ + && elapsed=$(($elapsed - $lasttime + $thistime)) \ + && lasttime=$thistime \ && i=$(($i + 1)) printf "\e[F" -- cgit v1.2.3