From f251bd75f568f34dcd2ba3d4b36180ae8441b839 Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Thu, 19 Dec 2024 05:15:56 +0900 Subject: [PATCH] plugins/progress: Adjust styles * plugins/progress: Remove an extra newline * style(plugins/progress): remove trailing semicolons * style(plugins/progress): adjust styles * fix(plugins/progress): update last-modified date * perf(plugins/progress): cache the result of "clear_line" --- plugins/progress/progress.plugin.sh | 92 +++++++++++++++-------------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/plugins/progress/progress.plugin.sh b/plugins/progress/progress.plugin.sh index d05e22b54..bc11fce9d 100644 --- a/plugins/progress/progress.plugin.sh +++ b/plugins/progress/progress.plugin.sh @@ -4,7 +4,7 @@ # Summary : Show a progress bar GUI on terminal platform # # Support : destro.nnt@gmail.com # # Created date : Aug 12,2014 # -# Latest Modified date : Aug 13,2014 # +# Latest Modified date : Dec 19,2024 # # # ################################################################################ @@ -20,76 +20,80 @@ # Global variable to store progress value _omb_plugin_progress_value=0 +_omb_plugin_progress_clear_line= + # # Description : delay executing script # -function delay() -{ - sleep 0.2; +function delay { + sleep 0.2 } # # Description : print out executing progress # -function progress() -{ - local value=$1; - local message=$2; +function progress { + local value=$1 + local message=$2 - if [ -z $value ]; then - printf 'Usage: progress [message]\n\n' - printf 'Options:\n' - printf ' value The value for the progress bar. Use 0 to reset.\n' - printf ' message The optional message to display next to the progress bar.\n' + if [[ ! $value ]]; then + _omb_util_print_lines \ + 'Usage: progress [message]' \ + '' \ + 'Options:' \ + ' value The value for the progress bar. Use 0 to reset.' \ + ' message The optional message to display next to the progress bar.' return 2 fi - if [ $value -lt 0 ]; then + if ((value < 0)); then _omb_log_error "invalid value: value' (expect: 0-100)" >&2 return 2 fi # Reset the progress value - if [ $value -eq 0 ]; then - _omb_plugin_progress_value=0; + if ((value == 0)); then + _omb_plugin_progress_value=0 return 0 fi # Get a clear line escape sequence - local clear_line - clear_line=$(tput el 2>/dev/null || tput ce 2>/dev/null) - if [ -z $clear_line ]; then - clear_line=$'\e[K' + local clear_line=$_omb_plugin_progress_clear_line + if [[ ! $clear_line ]]; then + clear_line=$(tput el 2>/dev/null || tput ce 2>/dev/null) + if [[ ! $clear_line ]]; then + clear_line=$'\e[K' + fi + _omb_plugin_progress_clear_line=$clear_line fi - if [ $_omb_plugin_progress_value -le 0 -a $value -ge 0 ] ; then printf "%s[............................] (0%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 5 -a $value -ge 5 ] ; then printf "%s[#...........................] (5%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 10 -a $value -ge 10 ]; then printf "%s[##..........................] (10%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 15 -a $value -ge 15 ]; then printf "%s[###.........................] (15%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 20 -a $value -ge 20 ]; then printf "%s[####........................] (20%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 25 -a $value -ge 25 ]; then printf "%s[#####.......................] (25%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 30 -a $value -ge 30 ]; then printf "%s[######......................] (30%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 35 -a $value -ge 35 ]; then printf "%s[#######.....................] (35%%) %s\r" "$clear_line" "$message" ; delay; fi; - - if [ $_omb_plugin_progress_value -le 40 -a $value -ge 40 ]; then printf "%s[########....................] (40%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 45 -a $value -ge 45 ]; then printf "%s[#########...................] (45%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 50 -a $value -ge 50 ]; then printf "%s[##########..................] (50%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 55 -a $value -ge 55 ]; then printf "%s[###########.................] (55%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 60 -a $value -ge 60 ]; then printf "%s[############................] (60%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 65 -a $value -ge 65 ]; then printf "%s[#############...............] (65%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 70 -a $value -ge 70 ]; then printf "%s[##############..............] (70%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 75 -a $value -ge 75 ]; then printf "%s[################............] (75%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 80 -a $value -ge 80 ]; then printf "%s[##################..........] (80%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 85 -a $value -ge 85 ]; then printf "%s[#####################.......] (85%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 90 -a $value -ge 90 ]; then printf "%s[########################....] (90%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 95 -a $value -ge 95 ]; then printf "%s[###########################.] (95%%) %s\r" "$clear_line" "$message" ; delay; fi; - if [ $_omb_plugin_progress_value -le 100 -a $value -ge 100 ]; then + if ((_omb_plugin_progress_value <= 0 && value >= 0)); then printf "%s[............................] (0%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 5 && value >= 5)); then printf "%s[#...........................] (5%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 10 && value >= 10)); then printf "%s[##..........................] (10%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 15 && value >= 15)); then printf "%s[###.........................] (15%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 20 && value >= 20)); then printf "%s[####........................] (20%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 25 && value >= 25)); then printf "%s[#####.......................] (25%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 30 && value >= 30)); then printf "%s[######......................] (30%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 35 && value >= 35)); then printf "%s[#######.....................] (35%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 40 && value >= 40)); then printf "%s[########....................] (40%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 45 && value >= 45)); then printf "%s[#########...................] (45%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 50 && value >= 50)); then printf "%s[##########..................] (50%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 55 && value >= 55)); then printf "%s[###########.................] (55%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 60 && value >= 60)); then printf "%s[############................] (60%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 65 && value >= 65)); then printf "%s[#############...............] (65%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 70 && value >= 70)); then printf "%s[##############..............] (70%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 75 && value >= 75)); then printf "%s[################............] (75%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 80 && value >= 80)); then printf "%s[##################..........] (80%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 85 && value >= 85)); then printf "%s[#####################.......] (85%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 90 && value >= 90)); then printf "%s[########################....] (90%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 95 && value >= 95)); then printf "%s[###########################.] (95%%) %s\r" "$clear_line" "$message"; delay; fi + if ((_omb_plugin_progress_value <= 100 && value >= 100)); then # Display the finished progress bar, and then clear with a new line. printf "%s[############################] (100%%) %s\r" "$clear_line" "$message" delay printf 'Done!%s\n' "$clear_line" value=0 - fi; + fi - _omb_plugin_progress_value=$value; + _omb_plugin_progress_value=$value }