Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

progress: Improve the Progress Plugin #622

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions plugins/progress/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ Bash. The function handles printing of the progress bar.
2. **Invoke `progress` Function:**
- Within a shell function, call the `progress` function whenever you want to display the progress bar.
- Pass two parameters to the `progress` function:
- `PARAM_PROGRESS`: The progress percentage (0-100) of the task.
- `PARAM_STATUS`: Optional. A status message to display alongside the progress bar.
- `value`: The progress percentage (0-100) of the task. Passing 0 will reset the progress bar status.
- `message`: Optional. A status message to display alongside the progress bar.

```bash
# Example usage:
Expand Down
95 changes: 69 additions & 26 deletions plugins/progress/progress.plugin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

################################################################################

# Global variable to store progress value
_omb_plugin_progress_value=0

#
# Description : delay executing script
Expand All @@ -29,32 +31,73 @@ function delay()
#
# Description : print out executing progress
#
CURRENT_PROGRESS=0
function progress()
{
PARAM_PROGRESS=$1;
PARAM_STATUS=$2;

if [ $CURRENT_PROGRESS -le 0 -a $PARAM_PROGRESS -ge 0 ] ; then printf "[..........................] (0%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 5 -a $PARAM_PROGRESS -ge 5 ] ; then printf "[#.........................] (5%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 10 -a $PARAM_PROGRESS -ge 10 ]; then printf "[##........................] (10%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 15 -a $PARAM_PROGRESS -ge 15 ]; then printf "[###.......................] (15%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 20 -a $PARAM_PROGRESS -ge 20 ]; then printf "[####......................] (20%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 25 -a $PARAM_PROGRESS -ge 25 ]; then printf "[#####.....................] (25%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 30 -a $PARAM_PROGRESS -ge 30 ]; then printf "[######....................] (30%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 35 -a $PARAM_PROGRESS -ge 35 ]; then printf "[#######...................] (35%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 40 -a $PARAM_PROGRESS -ge 40 ]; then printf "[########..................] (40%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 45 -a $PARAM_PROGRESS -ge 45 ]; then printf "[#########.................] (45%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 50 -a $PARAM_PROGRESS -ge 50 ]; then printf "[##########................] (50%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 55 -a $PARAM_PROGRESS -ge 55 ]; then printf "[###########...............] (55%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 60 -a $PARAM_PROGRESS -ge 60 ]; then printf "[############..............] (60%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 65 -a $PARAM_PROGRESS -ge 65 ]; then printf "[#############.............] (65%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 70 -a $PARAM_PROGRESS -ge 70 ]; then printf "[###############...........] (70%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 75 -a $PARAM_PROGRESS -ge 75 ]; then printf "[#################.........] (75%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 80 -a $PARAM_PROGRESS -ge 80 ]; then printf "[####################......] (80%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 85 -a $PARAM_PROGRESS -ge 85 ]; then printf "[#######################...] (90%) %s \r" "$PARAM_PHASE" ; delay; fi;
if [ $CURRENT_PROGRESS -le 90 -a $PARAM_PROGRESS -ge 90 ]; then printf "[##########################] (100%) %s \r" "$PARAM_PHASE"; delay; fi;
if [ $CURRENT_PROGRESS -le 100 -a $PARAM_PROGRESS -ge 100 ];then printf 'Done! \n' ; delay; fi;

CURRENT_PROGRESS=$PARAM_PROGRESS;
local value=$1;
local message=$2;

if [ -z $value ]; then
printf 'Usage: progress <value> [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'
return 2
fi

if [ $value -lt 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;
return 0
fi

# Get a clear line escape sequence
local clear_line
if _omb_util_command_exists 'tput'; then
clear_line=$(tput el)
if [ -z $clear_line ]; then
clear_line=$(tput el1)
if [ -z $clear_line ]; then
clear_line=$(tput ce)
fi
fi
fi
RobLoach marked this conversation as resolved.
Show resolved Hide resolved
if [ -z $clear_line ]; then
clear_line="\e[K"
RobLoach marked this conversation as resolved.
Show resolved Hide resolved
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
# Display the finished progress bar, and then clear with a new line.
printf "%s[####################] (100%%) %s\r" "$clear_line" "$message"
delay
printf "%s\n" "$clear_line"
value=0
fi;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The message Done! seems to have been dropped. Is this an intentional behavioral change? What is the rationale?


_omb_plugin_progress_value=$value;
}
Loading