diff options
author | davidovski <david@davidovski.xyz> | 2022-10-02 15:28:12 +0000 |
---|---|---|
committer | davidovski <david@davidovski.xyz> | 2022-10-02 15:28:12 +0000 |
commit | 91f3e7f0342ee77cb3134e030e92003c59f2d1f0 (patch) | |
tree | 750b2f3006d62f4b4aed4a102abb08dd349ca213 | |
parent | 928db4decc228b4469211e838d89985cb3bdf0bd (diff) |
Added hbar as sh
-rwxr-xr-x | src/util/hbar.sh | 95 | ||||
-rwxr-xr-x | test/hbar.sh | 10 |
2 files changed, 100 insertions, 5 deletions
diff --git a/src/util/hbar.sh b/src/util/hbar.sh new file mode 100755 index 0000000..25343bd --- /dev/null +++ b/src/util/hbar.sh @@ -0,0 +1,95 @@ +#!/bin/sh +. /usr/lib/colors.sh + +move_up () { + [ ! "$1" = "-1" ] && + printf "\033[%dA" "$1" "0" +} + +move_down () { + [ ! "$1" = "-1" ] && + printf "\033[%dA" "$1" +} + +count_string () { + local c t + $human && { + c=$(format_bytes $completed) + t=$(format_bytes $total) + } || { + c=$1 + t=$2 + } + printf "[%s%s/%s%s]" $c $unit $t $unit +} + +hbar () { + local width terminate human text color reset unit line count + width=$(tput cols) + color=$BG_BLUE + reset=$BG_DEFAULT + terminate=false + human=false + line=0 + + while getopts ":T:c:r:u:l:ht" opt; do + case "$opt" in + T) + text="$OPTARG" + ;; + c) + color="$OPTARG" + ;; + r) + reset="$OPTARG" + ;; + u) + unit="$OPTARG" + ;; + t) + terminate=true + ;; + h) + human=true + ;; + l) + line="$OPTARG" + ;; + esac + done + shift $((OPTIND-1)) + + [ "$#" -lt 2 ] && { + printf "$RESET\n" + exit 1 + } + + completed="$1" + total="$2" + + move_up $line + + count=$(count_string $completed $total) + printf "\r$text" + printf "$RESET\r" + printf "$color" + + reset_at=0 + [ "$total" -gt "0" ] && reset_at=$(((completed*width)/total)) + + i=0 + while [ "$i" -lt "$width" ]; do + [ "$i" = "$reset_at" ] && printf "$reset" + + printf " " + i=$((i+1)) + done + + move_down $line + + $terminate && printf "$RESET\n" + + exit 0 +} + +hbar $@ diff --git a/test/hbar.sh b/test/hbar.sh index 71713ef..4a124f2 100755 --- a/test/hbar.sh +++ b/test/hbar.sh @@ -1,13 +1,13 @@ #!/bin/sh -HBAR=./bin/hbar +HBAR=./dist/hbar UNIT="mb" MAX=100 TEXT="✓ Привет World Привет World Привет World Привет World Привет World Привет World " for x in $(seq $MAX); do ${HBAR} -T "${TEXT}" -u ${UNIT} $x $MAX - sleep 0.01 + #sleep 0.01 done TEXT="Hello there" @@ -15,7 +15,7 @@ TEXT="Hello there" ${HBAR} -t -T "${TEXT}" -u ${UNIT} $x $MAX for x in $(seq $MAX); do ${HBAR} -T "${TEXT}" -u ${UNIT} $x $MAX - sleep 0.01 + #sleep 0.01 done ${HBAR} -t -T "${TEXT}" -u ${UNIT} $x $MAX @@ -23,7 +23,7 @@ hbar for x in $(seq $MAX); do ${HBAR} -l 0 -T "${TEXT}" $((MAX - x)) $MAX ${HBAR} -l 1 -T "${TEXT}" $x $MAX - sleep 0.01 + #sleep 0.01 done ${HBAR} -l 1 -T "${TEXT}" $x $MAX ${HBAR} -l 0 -t -T "${TEXT}" $((MAX-x)) $MAX @@ -32,6 +32,6 @@ MAX=20000000 for x in $(seq 0 991 $MAX); do ${HBAR} -h -T "${TEXT}" $x $MAX - sleep 0.01 + #sleep 0.01 done ${HBAR} -ht -T "${TEXT}" $x $MAX |