sequencer - fix uncought error in new col_off function

sequencer - add debug and dry-run to sqr_args
This commit is contained in:
2022-11-28 23:02:35 +01:00
parent 915f8cbf3f
commit 3bf94eb781

View File

@@ -84,24 +84,30 @@ set -o pipefail
_sqr_restorePos= ;[ -t 1 ] && _sqr_restorePos='\033[u' _sqr_restorePos= ;[ -t 1 ] && _sqr_restorePos='\033[u'
## Terminal colors ## Terminal colors
col_black() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[0;30m';} col_black='\033[0;30m'
col_darkgrey() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[1;30m';} col_darkgrey='\033[1;30m'
col_red() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[0;31m';} col_red='\033[0;31m'
col_lightred() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[1;31m';} col_lightred='\033[1;31m'
col_green() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[0;32m';} col_green='\033[0;32m'
col_lightgreen() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[1;32m';} col_lightgreen='\033[1;32m'
col_orange() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[0;33m';} col_orange='\033[0;33m'
col_yellow() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[1;33m';} col_yellow='\033[1;33m'
col_blue() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[0;34m';} col_blue='\033[0;34m'
col_lightblue() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[1;34m';} col_lightblue='\033[1;34m'
col_purple() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[0;35m';} col_purple='\033[0;35m'
col_lightpurple() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[1;35m';} col_lightpurple='\033[1;35m'
col_cyan() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[0;36m';} col_cyan='\033[0;36m'
col_lightcyan() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[1;36m';} col_lightcyan='\033[1;36m'
col_lightgray() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[0;37m';} col_lightgray='\033[0;37m'
col_white() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[1;37m';} col_white='\033[1;37m'
## No Color ## No Color
col_off() { ((_sqr_term)) || ((_sqr_colorAlways)) && printf '%b' '\033[0m';} col_off='\033[0m'
col() {
local colVar="col_${1:-"off"}"
((_sqr_term)) || ((_sqr_colorAlways)) && echo "${!colVar}"
true
}
} }
helpSequencer() { helpSequencer() {
@@ -175,19 +181,19 @@ sequencer.sh global variables:
sequencer.sh build-in functions: sequencer.sh build-in functions:
USAGE_API USAGE_API
echo -e "$(col_green) root$(col_off)" echo -e "$(col green) root$(col off)"
cat <<USAGE_API cat <<USAGE_API
Returns true if current user is root. Returns true if current user is root.
e.g. root || echo "Not root" e.g. root || echo "Not root"
USAGE_API USAGE_API
echo -e "$(col_green) running$(col_off)" echo -e "$(col green) running$(col off)"
cat <<USAGE_API cat <<USAGE_API
Returns true if same script already runs. Returns true if same script already runs.
e.g. running && exit 1 e.g. running && exit 1
USAGE_API USAGE_API
echo -e "$(col_green) exists [OPTIONS] [ELEMENT]$(col_off)" echo -e "$(col green) exists [OPTIONS] [ELEMENT]$(col off)"
cat <<USAGE_API cat <<USAGE_API
[ELEMENT] [ELEMENT]
: either a variable- or a funtion name (-f) : either a variable- or a funtion name (-f)
@@ -195,37 +201,37 @@ USAGE_API
-f : a function -f : a function
-- : end of options -- : end of options
USAGE_API USAGE_API
echo -e "$(col_green) quiet$(col_off)" echo -e "$(col green) quiet$(col off)"
cat <<USAGE_API cat <<USAGE_API
Returns true if seq runs non-interactive (-q|-qq). Returns true if seq runs non-interactive (-q|-qq).
USAGE_API USAGE_API
echo -e "$(col_green) silent$(col_off)" echo -e "$(col green) silent$(col off)"
cat <<USAGE_API cat <<USAGE_API
Returns true if seq runs interactive. Returns true if seq runs interactive.
USAGE_API USAGE_API
echo -e "$(col_green) dry$(col_off)" echo -e "$(col green) dry$(col off)"
cat <<USAGE_API cat <<USAGE_API
Returns true if seq runs in dry-run mode (-d) Returns true if seq runs in dry-run mode (-d)
USAGE_API USAGE_API
echo -e "$(col_green) verbose$(col_off)" echo -e "$(col green) verbose$(col off)"
cat <<USAGE_API cat <<USAGE_API
Returns true if seq runs in verbose mode (-v) Returns true if seq runs in verbose mode (-v)
USAGE_API USAGE_API
echo -e "$(col_green) contextHelp$(col_off)" echo -e "$(col green) contextHelp$(col off)"
cat <<USAGE_API cat <<USAGE_API
Returns true if current output is only for help purposes. Returns true if current output is only for help purposes.
USAGE_API USAGE_API
echo -e "$(col_green) contextExe$(col_off)" echo -e "$(col green) contextExe$(col off)"
cat <<USAGE_API cat <<USAGE_API
Returns true if current output is in execution mode. Returns true if current output is in execution mode.
USAGE_API USAGE_API
echo -e "$(col_green) confirm [OPTIONS] [QUESTION]$(col_off)" echo -e "$(col green) confirm [OPTIONS] [QUESTION]$(col off)"
cat <<USAGE_API cat <<USAGE_API
Default (empty character) = no Default (empty character) = no
Invalid character trigger the default Invalid character trigger the default
@@ -236,7 +242,7 @@ USAGE_API
-- : end of options -- : end of options
USAGE_API USAGE_API
echo -e "$(col_green) ask [OPTION] [QUESTION] [DEFAULT]$(col_off)" echo -e "$(col green) ask [OPTION] [QUESTION] [DEFAULT]$(col off)"
cat <<USAGE_API cat <<USAGE_API
Will ask for input even if quiet, when [DEFAULT] is empty Will ask for input even if quiet, when [DEFAULT] is empty
[OPTION] [OPTION]
@@ -248,14 +254,14 @@ USAGE_API
-- : End of options -- : End of options
USAGE_API USAGE_API
echo -e "$(col_green) exe [COMMANDLINE]$(col_off)" echo -e "$(col green) exe [COMMANDLINE]$(col off)"
cat <<USAGE_API 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
USAGE_API USAGE_API
echo -e "$(col_green) exep \"[COMMAND STRING(s)]\"$(col_off)" echo -e "$(col green) exep \"[COMMAND STRING(s)]\"$(col off)"
cat <<USAGE_API cat <<USAGE_API
See exe, but support for pipes or redirects. See exe, but support for pipes or redirects.
e.g.: exep echo hello world \\> \\'out put.log\\' e.g.: exep echo hello world \\> \\'out put.log\\'
@@ -267,13 +273,13 @@ USAGE_API
- 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.
USAGE_API USAGE_API
echo -e "$(col_green) escpath <PATH>$(col_off)" echo -e "$(col green) escpath <PATH>$(col off)"
cat <<USAGE_API cat <<USAGE_API
Escaping non-printable characters with the proposed POSIX $'' syntax Escaping non-printable characters with the proposed POSIX $'' syntax
e.g. \$(escpath /my own/ho me/path) = $(escpath /my own/ho me/path) e.g. \$(escpath /my own/ho me/path) = $(escpath /my own/ho me/path)
USAGE_API USAGE_API
echo -e "$(col_green) initSeqConfig [OPTION] <NAME> [TEMPLATE]$(col_off)" echo -e "$(col green) initSeqConfig [OPTION] <NAME> [TEMPLATE]$(col off)"
cat <<USAGE_API cat <<USAGE_API
Create a configuration file in ${seq_configRoot}/ and source it if already existent. Create a configuration file in ${seq_configRoot}/ and source it if already existent.
[OPTION] [OPTION]
@@ -288,7 +294,7 @@ USAGE_API
3 : No configuration created 3 : No configuration created
USAGE_API USAGE_API
echo -e "$(col_green) addConf <OPTIONS> [SOURCE TYPE] <SOURCE> <DESTINATION FILE>$(col_off)" echo -e "$(col green) addConf <OPTIONS> [SOURCE TYPE] <SOURCE> <DESTINATION FILE>$(col off)"
cat <<USAGE_API 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.
@@ -307,13 +313,13 @@ USAGE_API
Target file to be created or modified. Target file to be created or modified.
USAGE_API USAGE_API
echo -e "$(col_green) step <STEP NUMBER OR ALIAS>$(col_off)" echo -e "$(col green) step <STEP NUMBER OR ALIAS>$(col off)"
cat <<USAGE_API 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.
USAGE_API USAGE_API
echo -e "$(col_green) color [FOREGROUND COLOR] [BACKGROUND COLOR]$(col_off)" echo -e "$(col green) color [FOREGROUND COLOR] [BACKGROUND COLOR]$(col off)"
cat <<USAGE_API cat <<USAGE_API
Set output color permanently until reset. Set output color permanently until reset.
No argument or unknown foreground color restores shell default (reset). No argument or unknown foreground color restores shell default (reset).
@@ -321,7 +327,7 @@ USAGE_API
[COLOR]: black, red, green, yellow, blue, magenta, cyan, white [COLOR]: black, red, green, yellow, blue, magenta, cyan, white
USAGE_API USAGE_API
echo -e "$(col_green) info|warning|error|debug [OPTIONS] [STRING]$(col_off)" echo -e "$(col green) info|warning|error|debug [OPTIONS] [STRING]$(col off)"
cat <<USAGE_API cat <<USAGE_API
Output [STRING] (can be multiline) to stdout according to log level. Output [STRING] (can be multiline) to stdout according to log level.
[OPTIONS] [OPTIONS]
@@ -331,13 +337,13 @@ USAGE_API
-n : No newline -n : No newline
USAGE_API USAGE_API
echo -e "$(col_green) echoinfo [...]$(col_off)" echo -e "$(col green) echoinfo [...]$(col off)"
cat <<USAGE_API cat <<USAGE_API
echo additional correctly indented line to step info echo additional correctly indented line to step info
[...] : all parameter are forwared to echo [...] : all parameter are forwared to echo
USAGE_API USAGE_API
echo -e "$(col_green) echoinfoArgs [...]$(col_off)" echo -e "$(col green) echoinfoArgs [...]$(col off)"
cat <<USAGE_API cat <<USAGE_API
echo argument description after step number or alias. echo argument description after step number or alias.
This must be called first in the step info function. This must be called first in the step info function.
@@ -345,24 +351,24 @@ USAGE_API
[...] : no parameter are forwared to echo [...] : no parameter are forwared to echo
USAGE_API USAGE_API
echo -e "$(col_green) endIfEmpty <VARIABLENAME> [DESCRIPTION]$(col_off)" echo -e "$(col green) endIfEmpty <VARIABLENAME> [DESCRIPTION]$(col off)"
cat <<USAGE_API cat <<USAGE_API
exit 6 if variable is empty exit 6 if variable is empty
<VARIABLENAME> : Name without \$ <VARIABLENAME> : Name without \$
[DESCRIPTION] : Additional text for error output [DESCRIPTION] : Additional text for error output
USAGE_API USAGE_API
echo -e "$(col_green) saveReturn [ERRORCODE]$(col_off)" echo -e "$(col green) saveReturn [ERRORCODE]$(col off)"
cat <<USAGE_API 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
USAGE_API USAGE_API
echo -e "$(col_green) getReturn$(col_off)" echo -e "$(col green) getReturn$(col off)"
cat <<USAGE_API cat <<USAGE_API
Return last saved error code Return last saved error code
USAGE_API USAGE_API
echo -e "$(col_green) endReturn [OPTIONS] [MESSAGE]$(col_off)" echo -e "$(col green) endReturn [OPTIONS] [MESSAGE]$(col off)"
cat <<USAGE_API 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.
@@ -399,12 +405,12 @@ USAGE_API
# -- : End of options # -- : End of options
# #
sqr::log () { sqr::log () {
sqr::debugPause #sqr::debugPause
local appendText= local appendText=
local direct=0 # no prefix and timestamp local direct=0 # no prefix and timestamp
local newline='\n' local newline='\n'
local col_end= local col_end=
col_end="$(col_off)" col_end="$(col off)"
local outp='/dev/stdout' local outp='/dev/stdout'
local log_level="${1:-}" local log_level="${1:-}"
@@ -462,12 +468,12 @@ USAGE_API
sqr::debugContinue sqr::debugContinue
} }
fatal () { sqr::log "stop" "$(col_red)" "${@}"; exit 1; } fatal () { sqr::log "stop" "$(col red)" "${@}"; exit 1; }
die () { sqr::log "end" "" "${@}"; exit 1; } die () { sqr::log "end" "" "${@}"; exit 1; }
error () { [[ "${LOG_LEVEL:-0}" -ge ${log_error} ]] && sqr::log "e" "$(col_red)" "${@}"; true; } error () { [[ "${LOG_LEVEL:-0}" -ge ${log_error} ]] && sqr::log "e" "$(col red)" "${@}"; true; }
warning () { [[ "${LOG_LEVEL:-0}" -ge ${log_warning} ]] && sqr::log "w" "$(col_orange)" "${@}"; true; } warning () { [[ "${LOG_LEVEL:-0}" -ge ${log_warning} ]] && sqr::log "w" "$(col orange)" "${@}"; true; }
info () { [[ "${LOG_LEVEL:-0}" -ge ${log_info} ]] && sqr::log "i" "" "${@}"; true; } info () { [[ "${LOG_LEVEL:-0}" -ge ${log_info} ]] && sqr::log "i" "" "${@}"; true; }
debug () { [[ "${LOG_LEVEL:-0}" -ge ${log_debug} ]] && sqr::log "dbug" "$(col_lightpurple)" "${@}"; true; } debug () { [[ "${LOG_LEVEL:-0}" -ge ${log_debug} ]] && sqr::log "dbug" "$(col lightpurple)" "${@}"; true; }
# internal print(s) same loglevel as error # internal print(s) same loglevel as error
# shellcheck disable=SC2059 # don't use variables in format # shellcheck disable=SC2059 # don't use variables in format
@@ -636,7 +642,7 @@ contextExe() {
# editor [FILE(s)..] # editor [FILE(s)..]
# Starts the detected system text editor # Starts the detected system text editor
editor() { editor() {
"${_sqr_editor}" "$@" exe "${_sqr_editor}" "$@"
} }
### interactive ### interactive
@@ -1114,7 +1120,7 @@ displayHelp() {
# Display alias if exists # Display alias if exists
if exists -f "step_${i}_alias" ; then if exists -f "step_${i}_alias" ; then
echo -en " = $(col_orange)$("step_${i}_alias")$(col_off)${_sqr_savePosAlias}" echo -en " = $(col orange)$("step_${i}_alias")$(col off)${_sqr_savePosAlias}"
# Newline only if step info() exists # Newline only if step info() exists
exists -f "step_${i}_info" && printf '\n%s' "$_sqr_indentHelp" exists -f "step_${i}_info" && printf '\n%s' "$_sqr_indentHelp"
else else
@@ -1347,7 +1353,7 @@ execute() {
exists -f "step_${1}_alias" && stepAlias=$("step_${1}_alias") exists -f "step_${1}_alias" && stepAlias=$("step_${1}_alias")
printf '\n [%3d] ' "${1}" printf '\n [%3d] ' "${1}"
if [ -n "${stepAlias}" ]; then if [ -n "${stepAlias}" ]; then
echo -en "$(col_orange)${stepAlias}$(col_off)${_sqr_savePosAlias}" echo -en "$(col orange)${stepAlias}$(col off)${_sqr_savePosAlias}"
# Only add newline if step info() available # Only add newline if step info() available
exists -f "step_${1}_info" && printf '\n%s' "${_sqr_indentExe}" exists -f "step_${1}_info" && printf '\n%s' "${_sqr_indentExe}"
else else
@@ -1517,9 +1523,11 @@ sqr::main() {
_sqr_colorAlways=1 _sqr_colorAlways=1
shift ;; shift ;;
--debug) --debug)
sqr_args+=" $1"
_sqr_debug="1" _sqr_debug="1"
shift ;; shift ;;
--dry-run|-d) --dry-run|-d)
sqr_args+=" $1"
_sqr_dry=1 _sqr_dry=1
shift ;; shift ;;
--help|-h) # show only help --help|-h) # show only help