#!/usr/bin/env bash # Configure styling if [[ -n "$TERM" ]] then inverse="$(tput setab 7)$(tput setaf 0)" bold="$(tput bold)" success="$(tput setab 2)$bold" info="$(tput setaf 6)$bold" warning="$(tput setaf 3)$bold" error="$(tput setab 1)$bold" reset=$(tput sgr0) fi # Ensure text styling, if tput could not work inverse=${inverse:-[[} bold=${bold:-[[} success=${success:-[[} info=${info:-[[} warning=${warning:-[[} error=${error:-[[} reset=${reset:-]]} export BOG_TITLE_PRINTED=0 # 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 () { if [[ $BOG_TITLE_PRINTED -eq 0 ]] then __print_title_header BOG_TITLE_PRINTED=1 fi read title echo "***** $title" } footer () { echo "***** *****" echo "***** END OF SCRIPT *****" echo " **** **** " echo " ********************************* " echo " *********************** " } section () { read title echo ":::::" echo ":$bold(*) $title...$reset" } result () { local exit_code=$? if [ $exit_code -eq 0 ] then echo ":)=> $success Ok $reset" else echo ":(!> $error Error $reset" fi } output () { while read line do #[ -z "$line" ] && break echo "::::| $line" done } output::warning () { while read line do echo ":::$warning$reset $line" done } output::info () { while read line do echo ":::$info$reset $line" done }