simplifies title generation

This commit is contained in:
2019-05-13 21:29:18 +02:00
parent eb2cc5b01d
commit 161b8e6c6b
2 changed files with 33 additions and 13 deletions

View File

@@ -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

38
main.sh
View File

@@ -6,18 +6,38 @@ 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"
}
@@ -25,7 +45,9 @@ subtitle () {
footer () {
echo "***** *****"
echo "***** END OF SCRIPT *****"
echo " **** ****"
echo " **** **** "
echo " ********************************* "
echo " *********************** "
}
section () {