Files
bog/main.sh

98 lines
1.8 KiB
Bash

#!/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
}