Adding colored output support (outColor)

Extended seq template
This commit is contained in:
2021-02-19 14:43:41 +01:00
parent 1a3fb55fbd
commit 41fd3d3861

View File

@@ -8,7 +8,7 @@
## Version information ## Version information
VERSION_REV=12 VERSION_REV=12
VERSION_MAJOR=0 VERSION_MAJOR=1
VERSION_MINOR=0 VERSION_MINOR=0
## Start of generic script part ## Start of generic script part
@@ -32,6 +32,25 @@ TEMPLATE_NAME=seqTemplateExample.sh
MISSING_CONF=missingConf.log MISSING_CONF=missingConf.log
VERSION_STRING="${VERSION_REV}.${VERSION_MAJOR}.${VERSION_MINOR}" VERSION_STRING="${VERSION_REV}.${VERSION_MAJOR}.${VERSION_MINOR}"
BBLACK= ; [ -t 1 ] && BBLACK='\033[40m'
BLACK= ; [ -t 1 ] && BLACK='\033[0;30m'
DARKGRAY= ; [ -t 1 ] && DARKGRAY='\033[1;30m'
RED= ; [ -t 1 ] && RED='\033[0;31m'
LIGHTRED= ; [ -t 1 ] && LIGHTRED='\033[1;31m'
GREEN= ; [ -t 1 ] && GREEN='\033[0;32m'
LIGHTGREEN= ; [ -t 1 ] && LIGHTGREEN='\033[1;32m'
ORANGE= ; [ -t 1 ] && ORANGE='\033[0;33m'
YELLOW= ; [ -t 1 ] && YELLOW='\033[1;33m'
BLUE= ; [ -t 1 ] && BLUE='\033[0;34m'
LIGHTBLUE= ; [ -t 1 ] && LIGHTBLUE='\033[1;34m'
PURPLE= ; [ -t 1 ] && PURPLE='\033[0;35m'
LIGHTPURPLE= ; [ -t 1 ] && LIGHTPURPLE='\033[1;35m'
CYAN= ; [ -t 1 ] && CYAN='\033[0;36m'
LIGHTCYAN= ; [ -t 1 ] && LIGHTCYAN='\033[1;36m'
LIGHTGRAY= ; [ -t 1 ] && LIGHTGRAY='\033[0;37m'
WHITE= ; [ -t 1 ] && WHITE='\033[1;37m'
NC= ;[ -t 1 ] && NC='\033[0m' # No Color
helpSequencer() { helpSequencer() {
cat <<USAGE_EOF cat <<USAGE_EOF
Usage: ${0##*/} [OPTIONS] [STEP NUMBER(s) or ALIAS] [STEP ARGUMENTS] Usage: ${0##*/} [OPTIONS] [STEP NUMBER(s) or ALIAS] [STEP ARGUMENTS]
@@ -103,19 +122,24 @@ sequencer.sh global variables:
Profile string selected with -p argument Profile string selected with -p argument
sequencer.sh build-in functions: sequencer.sh build-in functions:
USAGE_API
exe [COMMANDLINE] echo -e "${GREEN} exe [COMMANDLINE]${NC}"
cat <<USAGE_API
Execute command line without pipes or redirects (>,<,|). Execute command line without pipes or redirects (>,<,|).
Supporting: dry-run (-d): only print command without execution Supporting: dry-run (-d): only print command without execution
verbose (-v): print command before execution verbose (-v): print command before execution
exep "[COMMANDLINE]" USAGE_API
echo -e "${GREEN} exep \"[COMMANDLINE]\"${NC}"
cat <<USAGE_API
See exe, but support for pipes or redirects. See exe, but support for pipes or redirects.
Important: Important:
- Shell commands cd, read, ... won't work because COMMANDLINE is started in a new shell. - Shell commands cd, read, ... won't work because COMMANDLINE is started in a new shell.
- All apostrophes need to be esacped since the command line is given as string. - All apostrophes need to be esacped since the command line is given as string.
initSeqConfig [OPTION] <NAME> [TEMPLATE] USAGE_API
echo -e "${GREEN} initSeqConfig [OPTION] <NAME> [TEMPLATE]${NC}"
cat <<USAGE_API
Create a configuration file in $SEQ_CONFIG_HOME/ and source it if already existent. Create a configuration file in $SEQ_CONFIG_HOME/ and source it if already existent.
[OPTION] [OPTION]
-p : Use profiles -p : Use profiles
@@ -128,7 +152,9 @@ sequencer.sh build-in functions:
2 : created empty configuration 2 : created empty configuration
3 : No configuration created 3 : No configuration created
addConf <OPTIONS> [SOURCE TYPE] <SOURCE> <DESTINATION FILE> USAGE_API
echo -e "${GREEN} addConf <OPTIONS> [SOURCE TYPE] <SOURCE> <DESTINATION FILE>${NC}"
cat <<USAGE_API
Trying to write or append text or a file (<SOURCE>) to a destination file. Trying to write or append text or a file (<SOURCE>) to a destination file.
If the CONFIGFILE exists, a backup (name_%Y%m%d-%H%M%S.bck) is saved at the same location. If the CONFIGFILE exists, a backup (name_%Y%m%d-%H%M%S.bck) is saved at the same location.
If -s fails or -m, "$(realpath "$MISSING_CONF")" is created with the conflicts If -s fails or -m, "$(realpath "$MISSING_CONF")" is created with the conflicts
@@ -145,30 +171,58 @@ sequencer.sh build-in functions:
<DESTINATION FILE> <DESTINATION FILE>
Target file to be created or modified. Target file to be created or modified.
step <STEP NUMBER OR ALIAS> USAGE_API
echo -e "${GREEN} step <STEP NUMBER OR ALIAS>${NC}"
cat <<USAGE_API
Executes a single step also by alias. Useful if step numbers get reorganized. Executes a single step also by alias. Useful if step numbers get reorganized.
dry-run is not applied in this function! The executed step is responsible. dry-run is not applied in this function! The executed step is responsible.
echoerr [...] USAGE_API
echo -e "${GREEN} outColor [FOREGROUND COLOR] [BACKGROUND COLOR]${NC}"
cat <<USAGE_API
Set output color permanently until reset.
No argument or unknown foreground color restores shell default (reset).
Color reset happens after every step and step_info function call.
[COLOR]: black, red, green, yellow, blue, magenta, cyan, white
USAGE_API
echo -e "${GREEN} echoerr [...]${NC}"
cat <<USAGE_API
echo to stderr echo to stderr
[...] : all parameter are forwarded to echo [...] : all parameter are forwarded to echo
echoinfo [...] USAGE_API
echo -e "${GREEN} echoseq [...]${NC}"
cat <<USAGE_API
echo to stdout if sequencer output is not suppressed
[...] : all parameter are forwarded to echo
USAGE_API
echo -e "${GREEN} echoinfo [...]${NC}"
cat <<USAGE_API
echo additional correctly indented line to step info echo additional correctly indented line to step info
[...] : all parrameter are forwared to echo [...] : all parrameter are forwared to echo
endCheckEmpty <VARIABLENAME> [DESCRIPTION] USAGE_API
echo -e "${GREEN} endCheckEmpty <VARIABLENAME> [DESCRIPTION]${NC}"
cat <<USAGE_API
exit 666 if variable is empty exit 666 if variable is empty
<VARIABLENAME> : Name used within eval <VARIABLENAME> : Name used within eval
[DESCRIPTION] : Additional text for error output [DESCRIPTION] : Additional text for error output
saveReturn [ERRORCODE] USAGE_API
echo -e "${GREEN} saveReturn [ERRORCODE]${NC}"
cat <<USAGE_API
Save ERRORCODE if it is != 0 for later use with endReturn Save ERRORCODE if it is != 0 for later use with endReturn
getReturn USAGE_API
echo -e "${GREEN} getReturn${NC}"
cat <<USAGE_API
Return last saved error code Return last saved error code
endReturn [OPTIONS] [MESSAGE] USAGE_API
echo -e "${GREEN} endReturn [OPTIONS] [MESSAGE]${NC}"
cat <<USAGE_API
Notifys user that there was an error (previously saved by saveReturn, Notifys user that there was an error (previously saved by saveReturn,
or -o [ERRORCODE]) and asks to continue or end the sequence. or -o [ERRORCODE]) and asks to continue or end the sequence.
Always exits with evaluated error code. Always exits with evaluated error code.
@@ -181,9 +235,57 @@ sequencer.sh build-in functions:
USAGE_API USAGE_API
} }
# Echo only if not -qq ($QUIET -ne 2)
echoseq() { [ $QUIET -ne 2 ] && echo "$@"; }
# Echo to stderr # Echo to stderr
echoerr() { >&2 echo "$@"; } echoerr() { >&2 echo "$@"; }
# outColor <FOREGROUND COLOR> [BACKGROUND COLOR]
outColor() {
[ ! -t 1 ] && return 0
case "$1" in
black)
tput setaf 0;;
red)
tput setaf 1;;
green)
tput setaf 2;;
yellow)
tput setaf 3;;
blue)
tput setaf 4;;
magenta)
tput setaf 5;;
cyan)
tput setaf 6;;
white)
tput setaf 7;;
*)
tput sgr0
return;;
esac
case "$2" in
black)
tput setab 0;;
red)
tput setab 1;;
green)
tput setab 2;;
yellow)
tput setab 3;;
blue)
tput setab 4;;
magenta)
tput setab 5;;
cyan)
tput setab 6;;
white)
tput setab 7;;
esac
}
# Echo additional line to info correctly indented # Echo additional line to info correctly indented
INDENT_HELP=' : ' INDENT_HELP=' : '
INDENTAPPEND_HELP=' ' INDENTAPPEND_HELP=' '
@@ -355,7 +457,7 @@ initSeqConfig() {
SEQ_CONFIG_HOME="$configDir" SEQ_CONFIG_HOME="$configDir"
if [ -s "$configLoc" ] ; then if [ -s "$configLoc" ] ; then
if [ $QUIET -ne 2 ] ; then echo " [I] Using configuration file: $configLoc" ; fi [ $QUIET -ne 2 ] && echo " [I] Using configuration file: $configLoc"
SEQ_CONFIG_FILE="$configLoc" SEQ_CONFIG_FILE="$configLoc"
. "$configLoc" . "$configLoc"
return 0 return 0
@@ -546,6 +648,7 @@ execute() {
existsFunction step_${1}_info existsFunction step_${1}_info
if [ $? -eq 0 ] ; then if [ $? -eq 0 ] ; then
step_${1}_info $1 "${STEP_ARGS[@]}" step_${1}_info $1 "${STEP_ARGS[@]}"
outColor
else else
# Add newline if no info is given # Add newline if no info is given
echo echo
@@ -579,6 +682,7 @@ execute() {
step_$1 $1 "${STEP_ARGS[@]}" step_$1 $1 "${STEP_ARGS[@]}"
STEP_RETURN=$? STEP_RETURN=$?
fi fi
outColor
} }
# checkStep <Step Number or Alias> # checkStep <Step Number or Alias>
@@ -629,6 +733,7 @@ step() {
else else
step_$stepNo "${stepArgs[@]}" step_$stepNo "${stepArgs[@]}"
fi fi
outColor
} }
# continous <Starting Step Number> # continous <Starting Step Number>
@@ -714,6 +819,9 @@ step_config() {
#initSeqConfig -p "\$SCRIPT_NAME" "\$CONFIG_FILE_TEMPLATE" #initSeqConfig -p "\$SCRIPT_NAME" "\$CONFIG_FILE_TEMPLATE"
#if [ \$? -eq 0 ] ; then #if [ \$? -eq 0 ] ; then
# CONFIG=1 # CONFIG=1
#else
# # End if no configuration file exists
# [ \$DRY -eq 0 ] && exit 1
#fi #fi
} }
@@ -828,7 +936,7 @@ displayHelp() {
existsFunction step_${i}_alias existsFunction step_${i}_alias
if [ $? -eq 0 ] ; then if [ $? -eq 0 ] ; then
step_${i}_alias step_${i}_alias
echo " = $ALIAS" echo -e " = ${ORANGE}$ALIAS${NC}"
printf '%s' "$INDENT_HELP" printf '%s' "$INDENT_HELP"
else else
echo -n " : " echo -n " : "
@@ -841,6 +949,7 @@ displayHelp() {
else else
echo " - step_${i}_info() missing" echo " - step_${i}_info() missing"
fi fi
outColor
done done
echo echo
fi fi