diff --git a/README.md b/README.md index 2fb526a..8215eca 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,10 @@ For readable progress report on any script with ease. Anotate your script with formatting helpers by using pipe construct -*Example* - +The header of your script ``` echo "Script title" | title -echo "Author: You" | subtitle +echo "Author: You" | title ``` Tasks are wrapped by the `section`, `output` and `result` helpers. @@ -20,7 +19,6 @@ The flow is : 1. Print `section` header 2. Use `output` helpers to display the output you want generated 3. Close your section with `result` - ``` echo "Task number One" | section echo "This will work" | output::info diff --git a/main.sh b/main.sh index 8fba26d..fb5bb13 100644 --- a/main.sh +++ b/main.sh @@ -6,26 +6,48 @@ error="$(tput setab 1)$(tput bold)" underline=$(tput smul) reset=$(tput sgr0) -# Set pipefail option -set -o pipefail +export BOG_TITLE_PRINTED=0 -title () { - read title - echo " *************************************" +# Set pipefail option +# Exit status of overall pipe +# instead of last one +set -o pipefail +# Avoid spawning subshell +# Needed for title to be able +# to be globally updated inside pipe +shopt -s lastpipe + +__print_title_header () { + echo " *************************** " + echo " ********************************* " echo " ****" - echo "***** $title" echo "*****" } -subtitle () { +__check_last_pipe_status () { + local last_index=$((${#PIPESTATUS[@]}-1)) + local last_exit_code=${PIPESTATUS[$last_index]} + echo "DEBUG: $last_index, $last_exit_code" + return last_exit_code +} + +title () { + if [[ $BOG_TITLE_PRINTED -eq 0 ]] + then + __print_title_header + BOG_TITLE_PRINTED=1 + fi + read title - echo "***** $title" + echo "***** $title" } footer () { echo "***** *****" echo "***** END OF SCRIPT *****" - echo " **** ****" + echo " **** **** " + echo " ********************************* " + echo " *********************** " } section () {