basic runner format; write a MAIN function
introduce --verbosity flag rather than mixed logging settings; correct color misnaming to ANSI convention; added sanity-check; simplified hello-world; created FZF_USER_INPUT to replace the confusing FZF_HEAD and FZF_TAIL swap INFO for DEBUG v3-to-v4 upgrade docs bring some much-needed tender love and care to the scwrypts runner improved i/o handling on the run executable means this is no longer relevant FINALLY fix the weird cases for zsh/read builtin (particularly around reading one character from tty/pipe/file); also gave a --force-user-input flag in case you want to require user input on a yn prompt update ZLE plugin so it no more make errors FZF_(HEAD|TAIL) refactor to FZF_USER_INPUT plugins/kubectl migration from v3 to v4 plugins/ci migration from v3 to v4 refactor py/lib into python-scwrypts subproject verbosity is stupid lets call it log-level fix bug with virtualenv loading mergedeep to slow so I made my options dict shallow hokay first iteration of python-dudes is ready circleci configuration for python builds npm package for scwrypts 3.9.1 initial build/test steps for nodejs go go ok ok fix output ok ok finalize publish steps
This commit is contained in:
341
run
341
run
@ -1,12 +1,13 @@
|
||||
#!/bin/zsh
|
||||
export EXECUTION_DIR=$(pwd)
|
||||
source "${0:a:h}/zsh/lib/import.driver.zsh" || exit 42
|
||||
|
||||
#####################################################################
|
||||
|
||||
__RUN() {
|
||||
() {
|
||||
cd "$SCWRYPTS_ROOT__scwrypts"
|
||||
GIT_SCWRYPTS() { git -C "$SCWRYPTS_ROOT__scwrypts" $@; }
|
||||
local ERRORS=0
|
||||
local USAGE='
|
||||
usage: scwrypts [... options ...] [patterns] -- [...script options...]
|
||||
usage: scwrypts [...options...] [...patterns...] -- [...script options...]
|
||||
|
||||
options:
|
||||
selection
|
||||
@ -18,9 +19,13 @@ __RUN() {
|
||||
runtime
|
||||
-y, --yes auto-accept all [yn] prompts through current scwrypt
|
||||
-e, --env <env-name> set environment; overwrites SCWRYPTS_ENV
|
||||
-q, --quiet run in quiet mode
|
||||
-n, --no-log skip the log file and run in quiet mode
|
||||
-v, --verbose override quiet mode settings and print all debug dialogue
|
||||
-n shorthand for "--log-level 0"
|
||||
-v, --log-level [0-4] set scwrypts log level to one of the following:
|
||||
0 : only command output and critical failures; skips logfile
|
||||
1 : add success / failure messages
|
||||
2 : (default) include status update messages
|
||||
3 : (CI default) include warning messages
|
||||
4 : include debug messages
|
||||
|
||||
alternate commands
|
||||
-h, --help display this message and exit
|
||||
@ -28,27 +33,28 @@ __RUN() {
|
||||
--list-envs print out environment list and exit
|
||||
--update update scwrypts library to latest version
|
||||
--version print out scwrypts version and exit
|
||||
|
||||
|
||||
patterns:
|
||||
- a list of glob patterns to loose-match a scwrypt by name
|
||||
|
||||
script options:
|
||||
- everything after "--" is forwarded to the scwrypt you run
|
||||
(usually "-- --help" will provide more information)
|
||||
("-- --help" will provide more information)
|
||||
'
|
||||
cd "$SCWRYPTS_ROOT"
|
||||
|
||||
#####################################################################
|
||||
### cli argument parsing and global configuration ###################
|
||||
#####################################################################
|
||||
|
||||
local ENV_NAME="$SCWRYPTS_ENV"
|
||||
local SEARCH_PATTERNS=()
|
||||
|
||||
local VARSPLIT SEARCH_GROUP SEARCH_TYPE SEARCH_NAME
|
||||
|
||||
local ALLOW_LOGFILE=1
|
||||
local VERBOSE=1
|
||||
|
||||
[ $CI ] && [ ! $SCWRYPTS_CI_FORCE_NON_VERBOSE ] && VERBOSE=2
|
||||
|
||||
local ERROR=0
|
||||
[ ! $SCWRYPTS_LOG_LEVEL ] && {
|
||||
local SCWRYPTS_LOG_LEVEL
|
||||
[ $CI ] && SCWRYPTS_LOG_LEVEL=3 || SCWRYPTS_LOG_LEVEL=2
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
@ -58,30 +64,44 @@ __RUN() {
|
||||
set -- $(echo " $VARSPLIT ") ${@:2}
|
||||
;;
|
||||
|
||||
-h | --help ) USAGE; return 0 ;;
|
||||
-l | --list ) SCWRYPTS__GET_AVAILABLE_SCWRYPTS; return 0 ;;
|
||||
--list-envs ) SCWRYPTS__GET_ENV_NAMES; return 0 ;;
|
||||
### alternate commands ###################
|
||||
|
||||
-h | --help )
|
||||
USAGE
|
||||
return 0
|
||||
;;
|
||||
|
||||
-l | --list )
|
||||
SCWRYPTS__GET_AVAILABLE_SCWRYPTS
|
||||
return 0
|
||||
;;
|
||||
|
||||
--list-envs )
|
||||
SCWRYPTS__GET_ENV_NAMES
|
||||
return 0
|
||||
;;
|
||||
|
||||
--version )
|
||||
echo scwrypts $(git -C "$SCWRYPTS__ROOT__scwrypts" describe --tags)
|
||||
echo scwrypts $(GIT_SCWRYPTS describe --tags)
|
||||
return 0
|
||||
;;
|
||||
|
||||
--update )
|
||||
cd "$SCWRYPTS__ROOT__scwrypts"
|
||||
git fetch --quiet origin main
|
||||
git fetch --quiet origin main --tags
|
||||
GIT_SCWRYPTS fetch --quiet origin main
|
||||
GIT_SCWRYPTS fetch --quiet origin main --tags
|
||||
local SYNC_STATUS=$?
|
||||
|
||||
git diff --exit-code origin/main -- . >&2
|
||||
GIT_SCWRYPTS diff --exit-code origin/main -- . >/dev/null 2>&1
|
||||
local DIFF_STATUS=$?
|
||||
|
||||
[[ $SYNC_STATUS -eq 0 ]] && [[ $DIFF_STATUS -eq 0 ]] && {
|
||||
SUCCESS 'already up-to-date with origin/main'
|
||||
} || {
|
||||
git rebase --autostash origin/main \
|
||||
GIT_SCWRYPTS rebase --autostash origin/main \
|
||||
&& SUCCESS 'up-to-date with origin/main' \
|
||||
&& GIT_SCWRYPTS log -n1 \
|
||||
|| {
|
||||
git rebase --abort
|
||||
GIT_SCWRYPTS rebase --abort
|
||||
ERROR 'unable to update scwrypts; please try manual upgrade'
|
||||
REMINDER "installation in '$(pwd)'"
|
||||
}
|
||||
@ -89,41 +109,52 @@ __RUN() {
|
||||
return 0
|
||||
;;
|
||||
|
||||
### scwrypts filters #####################
|
||||
|
||||
-m | --name )
|
||||
[ ! $2 ] && ERROR "missing value for argument $1" && break
|
||||
[ $2 ] || { ERROR "missing value for argument $1"; break; }
|
||||
SEARCH_NAME=$2
|
||||
shift 1
|
||||
;;
|
||||
|
||||
-g | --group )
|
||||
[ ! $2 ] && ERROR "missing value for argument $1" && break
|
||||
[ $2 ] || { ERROR "missing value for argument $1"; break; }
|
||||
SEARCH_GROUP=$2
|
||||
shift 1
|
||||
;;
|
||||
|
||||
-t | --type )
|
||||
[ ! $2 ] && ERROR "missing value for argument $1" && break
|
||||
[ $2 ] || { ERROR "missing value for argument $1"; break; }
|
||||
SEARCH_TYPE=$2
|
||||
shift 1
|
||||
;;
|
||||
|
||||
-y | --yes ) export __SCWRYPTS_YES=1 ;;
|
||||
-q | --quiet ) VERBOSE=0 ;;
|
||||
-n | --no-log ) VERBOSE=0 ; [ ! $SUBSCWRYPT ] && SUBSCWRYPT=0 ;;
|
||||
-v | --verbose ) VERBOSE=2 ;;
|
||||
### runtime settings #####################
|
||||
|
||||
-y | --yes ) export __SCWRYPTS_YES=1 ;;
|
||||
|
||||
-n | --no-log )
|
||||
SCWRYPTS_LOG_LEVEL=0
|
||||
[[ $1 =~ ^--no-log$ ]] && WARNING 'the --no-log flag is deprecated and will be removed in scwrypts v4.2'
|
||||
;;
|
||||
|
||||
-v | --log-level )
|
||||
[[ $2 =~ ^[0-4]$ ]] || ERROR "invalid setting for log-level '$2'"
|
||||
SCWRYPTS_LOG_LEVEL=$2
|
||||
shift 1
|
||||
;;
|
||||
|
||||
-e | --env )
|
||||
[ ! $2 ] && ERROR "missing value for argument $1" && break
|
||||
[ ! $SUBSCWRYPTS ] \
|
||||
&& [ $ENV_NAME ] \
|
||||
&& WARNING 'overwriting session environment' \
|
||||
;
|
||||
[ $2 ] || { ERROR "missing value for argument $1"; break; }
|
||||
|
||||
[ $ENV_NAME ] && DEBUG 'overwriting session environment'
|
||||
|
||||
ENV_NAME="$2"
|
||||
STATUS "using CLI environment '$ENV_NAME'"
|
||||
shift 1
|
||||
;;
|
||||
|
||||
##########################################
|
||||
|
||||
-- ) shift 1; break ;; # pass arguments after '--' to the scwrypt
|
||||
--* ) ERROR "unrecognized argument '$1'" ;;
|
||||
@ -139,26 +170,20 @@ __RUN() {
|
||||
|
||||
CHECK_ERRORS
|
||||
|
||||
##########################################
|
||||
#####################################################################
|
||||
### scwrypts selection / filtering ##################################
|
||||
#####################################################################
|
||||
|
||||
local SCWRYPTS_AVAILABLE
|
||||
local POTENTIAL_ERROR="no such scwrypt exists:"
|
||||
|
||||
SCWRYPTS_AVAILABLE=$(SCWRYPTS__GET_AVAILABLE_SCWRYPTS)
|
||||
|
||||
[ $SEARCH_NAME ] && {
|
||||
POTENTIAL_ERROR+="\n NAME : '$SEARCH_NAME'"
|
||||
POTENTIAL_ERROR+="\n TYPE : '$SEARCH_TYPE'"
|
||||
POTENTIAL_ERROR+="\n GROUP : '$SEARCH_GROUP'"
|
||||
SCWRYPTS_AVAILABLE=$({
|
||||
echo $SCWRYPTS_AVAILABLE | head -n1
|
||||
echo $SCWRYPTS_AVAILABLE | sed -e 's/\x1b\[[0-9;]*m//g' | grep "^$SEARCH_NAME *$SEARCH_TYPE *$SEARCH_GROUP\$"
|
||||
})
|
||||
}
|
||||
##########################################
|
||||
|
||||
[ ! $SEARCH_NAME ] && {
|
||||
[ $SEARCH_NAME ] && SCWRYPTS_AVAILABLE=$({
|
||||
echo $SCWRYPTS_AVAILABLE | head -n1
|
||||
echo $SCWRYPTS_AVAILABLE | sed -e 's/\x1b\[[0-9;]*m//g' | grep "^$SEARCH_NAME *$SEARCH_TYPE *$SEARCH_GROUP\$"
|
||||
}) || {
|
||||
[ $SEARCH_TYPE ] && {
|
||||
POTENTIAL_ERROR+="\n TYPE : '$SEARCH_TYPE'"
|
||||
SCWRYPTS_AVAILABLE=$(\
|
||||
{
|
||||
echo $SCWRYPTS_AVAILABLE | head -n1
|
||||
@ -171,7 +196,6 @@ __RUN() {
|
||||
}
|
||||
|
||||
[ $SEARCH_GROUP ] && {
|
||||
POTENTIAL_ERROR+="\n GROUP : '$SEARCH_GROUP'"
|
||||
SCWRYPTS_AVAILABLE=$(
|
||||
{
|
||||
echo $SCWRYPTS_AVAILABLE | head -n1
|
||||
@ -198,41 +222,47 @@ __RUN() {
|
||||
}
|
||||
}
|
||||
|
||||
[[ $(echo $SCWRYPTS_AVAILABLE | wc -l) -lt 2 ]] && ERROR "$POTENTIAL_ERROR"
|
||||
|
||||
CHECK_ERRORS
|
||||
[[ $(echo $SCWRYPTS_AVAILABLE | wc -l) -lt 2 ]] && {
|
||||
FAIL 1 "$(echo "
|
||||
no such scwrypt exists
|
||||
NAME : '$SEARCH_NAME'
|
||||
TYPE : '$SEARCH_TYPE'
|
||||
GROUP : '$SEARCH_GROUP'
|
||||
PATTERNS : '$SEARCH_PATTERNS'
|
||||
" | sed "1d; \$d; /''$/d")"
|
||||
}
|
||||
|
||||
##########################################
|
||||
|
||||
local NAME="$SEARCH_NAME"
|
||||
local TYPE="$SEARCH_TYPE"
|
||||
local GROUP="$SEARCH_GROUP"
|
||||
[[ $(echo $SCWRYPTS_AVAILABLE | wc -l) -eq 2 ]] \
|
||||
&& SCWRYPT_SELECTION=$(echo $SCWRYPTS_AVAILABLE | tail -n1) \
|
||||
|| SCWRYPT_SELECTION=$(echo $SCWRYPTS_AVAILABLE | FZF "select a script to run" --header-lines 1) \
|
||||
;
|
||||
|
||||
[[ $(echo $SCWRYPTS_AVAILABLE | wc -l) -eq 2 ]] && {
|
||||
SCWRYPT_SELECTION=$(echo $SCWRYPTS_AVAILABLE | tail -n1)
|
||||
[[ $VERBOSE -eq 2 ]] || VERBOSE=0
|
||||
} || {
|
||||
SCWRYPT_SELECTION=$(echo $SCWRYPTS_AVAILABLE | FZF "select a script to run" --header-lines 1)
|
||||
}
|
||||
[ $SCWRYPT_SELECTION ] || exit 2
|
||||
|
||||
##########################################
|
||||
|
||||
local NAME TYPE GROUP
|
||||
SCWRYPTS__SEPARATE_SCWRYPT_SELECTION $SCWRYPT_SELECTION
|
||||
|
||||
export SCWRYPT_NAME=$NAME
|
||||
export SCWRYPT_TYPE=$TYPE
|
||||
export SCWRYPT_GROUP=$GROUP
|
||||
|
||||
##########################################
|
||||
#####################################################################
|
||||
### environment variables and configuration validation ##############
|
||||
#####################################################################
|
||||
|
||||
local ENV_REQUIRED=true \
|
||||
&& [ ! $CI ] \
|
||||
&& [[ ! $SCWRYPT_NAME =~ scwrypts/logs ]] \
|
||||
&& [[ ! $SCWRYPT_NAME =~ scwrypts/environment ]] \
|
||||
|| ENV_REQUIRED=false
|
||||
|
||||
local ENV_REQUIRED=$(__CHECK_ENV_REQUIRED && echo 1 || echo 0)
|
||||
local REQUIRED_ENVIRONMENT_REGEX=$(eval echo '$SCWRYPTS_REQUIRED_ENVIRONMENT_REGEX__'$SCWRYPT_GROUP)
|
||||
|
||||
[ $REQUIRED_ENVIRONMENT_REGEX ] && {
|
||||
[[ $ENV_NAME =~ $REQUIRED_ENVIRONMENT_REGEX ]] \
|
||||
|| FAIL 5 "group '$SCWRYPT_GROUP' requires current environment to match '$REQUIRED_ENVIRONMENT_REGEX' (currently $ENV_NAME)"
|
||||
}
|
||||
|
||||
[[ $ENV_REQUIRED -eq 1 ]] && {
|
||||
[[ $ENV_REQUIRED =~ true ]] && {
|
||||
[ ! $ENV_NAME ] && ENV_NAME=$(SCWRYPTS__SELECT_ENV)
|
||||
|
||||
for GROUP in ${SCWRYPTS_GROUPS[@]}
|
||||
@ -249,105 +279,110 @@ __RUN() {
|
||||
export ENV_NAME
|
||||
}
|
||||
|
||||
##########################################
|
||||
|
||||
[ $REQUIRED_ENVIRONMENT_REGEX ] && {
|
||||
[[ $ENV_NAME =~ $REQUIRED_ENVIRONMENT_REGEX ]] \
|
||||
|| FAIL 5 "group '$SCWRYPT_GROUP' requires current environment to match '$REQUIRED_ENVIRONMENT_REGEX' (currently $ENV_NAME)"
|
||||
|| FAIL 5 "group '$SCWRYPT_GROUP' requires current environment name to match '$REQUIRED_ENVIRONMENT_REGEX' (currently $ENV_NAME)"
|
||||
}
|
||||
|
||||
##########################################
|
||||
|
||||
: \
|
||||
&& [ ! $SUBSCWRYPT ] \
|
||||
&& [[ $ENV_NAME =~ prod ]] \
|
||||
&& { __VALIDATE_UPSTREAM_TIMELINE || ABORT; }
|
||||
[ ! $SUBSCWRYPT ] && [[ $ENV_NAME =~ prod ]] && {
|
||||
STATUS "on '$ENV_NAME'; checking diff against origin/main"
|
||||
|
||||
GIT_SCWRYPTS fetch --quiet origin main
|
||||
local SYNC_STATUS=$?
|
||||
|
||||
GIT_SCWRYPTS diff --exit-code origin/main -- . >&2
|
||||
local DIFF_STATUS=$?
|
||||
|
||||
[[ $SYNC_STATUS -eq 0 ]] && [[ $DIFF_STATUS -eq 0 ]] && {
|
||||
SUCCESS 'up-to-date with origin/main'
|
||||
} || {
|
||||
SCWRYPTS_LOG_LEVEL=3 WARNING "you are trying to run in ${__BRIGHT_RED}production${__YELLOW} but $([[ $SYNC_STATUS -ne 0 ]] && echo 'I am unable to verify your scwrypts version')$([[ $DIFF_STATUS -ne 0 ]] && echo 'your scwrypts is out-of-date (diff listed above)')"
|
||||
|
||||
yN 'continue?' || {
|
||||
REMINDER "you can use 'scwrypts --update' to quickly update scwrypts to latest"
|
||||
ABORT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##########################################
|
||||
|
||||
local RUN_STRING=$(SCWRYPTS__GET_RUNSTRING $SCWRYPT_NAME $SCWRYPT_TYPE $SCWRYPT_GROUP)
|
||||
[ ! $RUN_STRING ] && exit 3
|
||||
[ "$RUN_STRING" ] || return 42
|
||||
|
||||
##########################################
|
||||
#####################################################################
|
||||
### logging and pretty header/footer setup ##########################
|
||||
#####################################################################
|
||||
|
||||
local LOGFILE=$(__GET_LOGFILE)
|
||||
local LOGFILE \
|
||||
&& [[ $SCWRYPTS_LOG_LEVEL -gt 0 ]] \
|
||||
&& [ ! $SUBSCWRYPT ] \
|
||||
&& [[ ! $SCWRYPT_NAME =~ scwrypts/logs ]] \
|
||||
&& [[ ! $SCWRYPT_NAME =~ interactive ]] \
|
||||
&& LOGFILE="$SCWRYPTS_LOG_PATH/$(echo $GROUP/$TYPE/$NAME | sed 's/^\.\///; s/\//\%/g').log" \
|
||||
|| LOGFILE='/dev/null' \
|
||||
;
|
||||
|
||||
local HEADER=$(
|
||||
[[ $VERBOSE -gt 0 ]] || return 0
|
||||
[ $SUBSCWRYPT ] && return 0
|
||||
echo '====================================================================='
|
||||
echo "script : $SCWRYPT_GROUP $SCWRYPT_TYPE $SCWRYPT_NAME"
|
||||
echo "run at : $(date)"
|
||||
echo "config : $ENV_NAME"
|
||||
[ ! $LOGFILE ] && echo '\033[1;33m------------------------------------------\033[0m'
|
||||
)
|
||||
local RUN_MODE=normal
|
||||
[[ $LOGFILE =~ ^/dev/null$ ]] && RUN_MODE=no-logfile
|
||||
[[ $SCWRYPT_NAME =~ interactive ]] && RUN_MODE=interactive
|
||||
|
||||
[ ! $LOGFILE ] && {
|
||||
[ $HEADER ] && echo $HEADER
|
||||
[ $SUBSCWRYPT ] && {
|
||||
eval "$RUN_STRING $(printf "%q " "$@")"
|
||||
exit $?
|
||||
} || {
|
||||
eval "$RUN_STRING $(printf "%q " "$@")" </dev/tty >/dev/tty 2>&1
|
||||
exit $?
|
||||
}
|
||||
local HEADER FOOTER
|
||||
|
||||
[[ $SCWRYPTS_LOG_LEVEL -ge 2 ]] && {
|
||||
HEADER=$(
|
||||
echo "
|
||||
=====================================================================
|
||||
script : $SCWRYPT_GROUP $SCWRYPT_TYPE $SCWRYPT_NAME
|
||||
run at : $(date)
|
||||
config : $ENV_NAME
|
||||
log level : $SCWRYPTS_LOG_LEVEL
|
||||
\\033[1;33m--- SCWRYPT BEGIN ---------------------------------------------------\\033[0m
|
||||
" | sed 's/^\s\+//; 1d'
|
||||
)
|
||||
|
||||
FOOTER="\\033[1;33m--- SCWRYPT END ---------------------------------------------------\\033[0m"
|
||||
}
|
||||
|
||||
[ $SUBSCWRYPT ] && {
|
||||
HEADER="\\033[0;33m--- ($SUBSCWRYPT) BEGIN $SCWRYPT_GROUP $SCWRYPT_TYPE $SCWRYPT_NAME ---"
|
||||
FOOTER="\\033[0;33m--- ($SUBSCWRYPT) END $SCWRYPT_GROUP $SCWRYPT_TYPE $SCWRYPT_NAME ---"
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
### run the scwrypt #################################################
|
||||
#####################################################################
|
||||
|
||||
[ ! $SUBSCWRYPT ] && export SUBSCWRYPT=0
|
||||
|
||||
set -o pipefail
|
||||
{
|
||||
[ $HEADER ] && echo $HEADER
|
||||
[[ $VERBOSE -gt 0 ]] && echo '\033[1;33m--- BEGIN OUTPUT -------------------------\033[0m'
|
||||
(eval "$RUN_STRING $(printf "%q " "$@")")
|
||||
EXIT_CODE=$?
|
||||
[[ $VERBOSE -gt 0 ]] && echo '\033[1;33m--- END OUTPUT ---------------------------\033[0m'
|
||||
|
||||
case $RUN_MODE in
|
||||
normal )
|
||||
(eval "$RUN_STRING $(printf "%q " "$@")")
|
||||
EXIT_CODE=$?
|
||||
;;
|
||||
no-logfile )
|
||||
eval "$RUN_STRING $(printf "%q " "$@")"
|
||||
EXIT_CODE=$?
|
||||
;;
|
||||
interactive )
|
||||
eval "$RUN_STRING $(printf "%q " "$@")" </dev/tty >/dev/tty 2>&1
|
||||
EXIT_CODE=$?
|
||||
;;
|
||||
esac
|
||||
[ $FOOTER ] && echo $FOOTER
|
||||
[[ $EXIT_CODE -eq 0 ]] && EXIT_COLOR='32m' || EXIT_COLOR='31m'
|
||||
|
||||
[[ $VERBOSE -gt 0 ]] && echo "terminated with\\033[1;$EXIT_COLOR code $EXIT_CODE\\033[0m"
|
||||
[[ $SCWRYPTS_LOG_LEVEL -ge 2 ]] && [ ! $SUBSCWRYPT ] \
|
||||
&& echo "terminated with\\033[1;$EXIT_COLOR code $EXIT_CODE\\033[0m"
|
||||
|
||||
return $EXIT_CODE
|
||||
} 2>&1 | tee --append "$LOGFILE"
|
||||
|
||||
exit $(\
|
||||
sed -n 's/^terminated with.*code \([0-9]*\).*$/\1/p' $LOGFILE \
|
||||
| tail -n1
|
||||
)
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
|
||||
__CHECK_ENV_REQUIRED() {
|
||||
[ $CI ] && return 1
|
||||
|
||||
echo $SCWRYPT_NAME | grep -q 'scwrypts/logs/' && return 1
|
||||
echo $SCWRYPT_NAME | grep -q 'scwrypts/environment/' && return 1
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
__VALIDATE_UPSTREAM_TIMELINE() {
|
||||
STATUS "on '$ENV_NAME'; checking diff against origin/main"
|
||||
|
||||
git fetch --quiet origin main
|
||||
local SYNC_STATUS=$?
|
||||
|
||||
git diff --exit-code origin/main -- . >&2
|
||||
local DIFF_STATUS=$?
|
||||
|
||||
[[ $SYNC_STATUS -eq 0 ]] && [[ $DIFF_STATUS -eq 0 ]] && {
|
||||
SUCCESS 'up-to-date with origin/main'
|
||||
} || {
|
||||
WARNING
|
||||
[[ $SYNC_STATUS -ne 0 ]] && WARNING 'unable to synchronize with origin/main'
|
||||
[[ $DIFF_STATUS -ne 0 ]] && WARNING 'your branch differs from origin/main (diff listed above)'
|
||||
WARNING
|
||||
|
||||
yN 'continue?' || return 1
|
||||
}
|
||||
}
|
||||
|
||||
__GET_LOGFILE() {
|
||||
[ $SUBSCWRYPT ] && return 0
|
||||
[[ $SCWRYPT_NAME =~ scwrypts/logs ]] && return 0
|
||||
[[ $SCWRYPT_NAME =~ interactive ]] && return 0
|
||||
|
||||
echo "$SCWRYPTS_LOG_PATH/$(echo $GROUP/$TYPE/$NAME | sed 's/^\.\///; s/\//\%/g').log"
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
__RUN $@
|
||||
} $@
|
||||
|
Reference in New Issue
Block a user