=====================================================================

Changed environment dependency checker to be more automatic
This commit is contained in:
Wryn (yage) Wagner 2022-05-24 10:26:05 -06:00
parent bffd64051c
commit 2dcf94199b
36 changed files with 133 additions and 147 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
*.zsh diff

View File

@ -1,14 +1,6 @@
#!/bin/zsh #!/bin/zsh
SCWRYPTS_ROOT="${0:a:h}" SCWRYPTS_ROOT="${0:a:h}"
source "$SCWRYPTS_ROOT/zsh/common.zsh" source "$SCWRYPTS_ROOT/zsh/common.zsh"
__CHECK_DEPENDENCIES \
fzf \
;
__CHECK_IMPORTS
##################################################################### #####################################################################
__RUN() { __RUN() {

View File

@ -1,6 +1,8 @@
source ${0:a:h}/zsh/common.zsh source ${0:a:h}/zsh/common.zsh
##################################################################### #####################################################################
[ ! $SCWRYPTS_SHORTCUT ] && return 0 [ ! $SCWRYPTS_SHORTCUT ] && {
export SCWRYPTS_SHORTCUT='' # CTRL + SPACE
}
__SCWRYPTS() { __SCWRYPTS() {
@ -14,11 +16,14 @@ __SCWRYPTS() {
RBUFFER+=" $SCRIPT" RBUFFER+=" $SCRIPT"
zle accept-line zle accept-line
} }
zle -N scwrypts __SCWRYPTS zle -N scwrypts __SCWRYPTS
bindkey $SCWRYPTS_SHORTCUT scwrypts bindkey $SCWRYPTS_SHORTCUT scwrypts
##################################################################### #####################################################################
[ ! $SCWRYPTS_ENV_SHORTCUT ] && return 0 [ ! $SCWRYPTS_ENV_SHORTCUT ] && {
export SCWRYPTS_ENV_SHORTCUT='' # CTRL + /
}
__SCWRYPTS_ENV() { __SCWRYPTS_ENV() {
local RESET='reset' local RESET='reset'
@ -31,9 +36,10 @@ __SCWRYPTS_ENV() {
[ $SELECTED ] && { [ $SELECTED ] && {
[[ $SELECTED =~ ^$RESET$ ]] \ [[ $SELECTED =~ ^$RESET$ ]] \
&& RBUFFER='unset SCWRYPTS_ENV' \ && RBUFFER='unset SCWRYPTS_ENV' \
|| RBUFFER="export SCWRYPTS_ENV=$SELECTED'" || RBUFFER="export SCWRYPTS_ENV=$SELECTED"
} }
zle accept-line zle accept-line
} }
zle -N scwrypts-setenv __SCWRYPTS_ENV zle -N scwrypts-setenv __SCWRYPTS_ENV
bindkey $SCWRYPTS_ENV_SHORTCUT scwrypts-setenv bindkey $SCWRYPTS_ENV_SHORTCUT scwrypts-setenv

View File

@ -1,16 +1,13 @@
_DEPENDENCIES+=(
aws
jq
)
_REQUIRED_ENV+=(
_AWS_ACCOUNT
_AWS_PROFILE
_AWS_REGION
)
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
__CHECK_DEPENDENCIES \
aws \
jq \
;
__CHECK_ENV_VARS \
_AWS_ACCOUNT \
_AWS_PROFILE \
_AWS_REGION \
;
##################################################################### #####################################################################
_AWS() { aws --profile $_AWS_PROFILE --region $_AWS_REGION --output json $@; } _AWS() { aws --profile $_AWS_PROFILE --region $_AWS_REGION --output json $@; }

View File

@ -1,10 +1,6 @@
_DEPENDENCIES+=(
docker
)
_REQUIRED_ENV+=()
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
__CHECK_DEPENDENCIES \
docker \
;
__CHECK_ENV_VARS \
;
##################################################################### #####################################################################

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
__STATUS "performing AWS ECR docker login" __STATUS "performing AWS ECR docker login"

View File

@ -1,10 +1,6 @@
_DEPENDENCIES+=()
_REQUIRED_ENV+=(
AWS__EFS__LOCAL_MOUNT_POINT
)
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
__CHECK_DEPENDENCIES \
;
__CHECK_ENV_VARS \
AWS__EFS__LOCAL_MOUNT_POINT \
;
##################################################################### #####################################################################

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
_EFS_CONNECT() { _EFS_CONNECT() {

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
_EFS_DISCONNECT() { _EFS_DISCONNECT() {

6
zsh/aws/rds/common.zsh Normal file
View File

@ -0,0 +1,6 @@
_DEPENDENCIES+=(
psql
)
_REQUIRED_ENV+=()
source ${0:a:h}/../common.zsh
#####################################################################

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
_ROUTE53_BACKUP() { _ROUTE53_BACKUP() {

View File

@ -1,10 +1,6 @@
_DEPENDENCIES+=(
cli53
)
_REQUIRED_ENV+=()
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
__CHECK_DEPENDENCIES \
cli53 \
;
__CHECK_ENV_VARS \
;
##################################################################### #####################################################################

View File

@ -1,9 +1,4 @@
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
__CHECK_DEPENDENCIES \
;
__CHECK_ENV_VARS \
;
##################################################################### #####################################################################

View File

@ -1,17 +1,13 @@
_DEPENDENCIES+=()
_REQUIRED_ENV+=(
AWS__S3__MEDIA_TARGETS
AWS__S3__MEDIA_BUCKET
)
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
#####################################################################
__CHECK_DEPENDENCIES \
;
__CHECK_ENV_VARS \
AWS__S3__MEDIA_TARGETS \
AWS__S3__MEDIA_BUCKET \
;
AWS__S3__MEDIA_TARGETS=($(echo $AWS__S3__MEDIA_TARGETS | sed 's/,/\n/g')) AWS__S3__MEDIA_TARGETS=($(echo $AWS__S3__MEDIA_TARGETS | sed 's/,/\n/g'))
#####################################################################
__SYNC_MEDIA() { __SYNC_MEDIA() {
local ACTION="$1" local ACTION="$1"
local REMOTE_TARGET="s3://$AWS__S3__MEDIA_BUCKET/$2" local REMOTE_TARGET="s3://$AWS__S3__MEDIA_BUCKET/$2"

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
__PULL_ALL_MEDIA() { __PULL_ALL_MEDIA() {

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
__PUSH_ALL_MEDIA() { __PUSH_ALL_MEDIA() {

View File

@ -1,3 +1,5 @@
#####################################################################
[ ! $SCWRYPTS_ROOT ] && SCWRYPTS_ROOT="$(dirname ${0:a:h})" [ ! $SCWRYPTS_ROOT ] && SCWRYPTS_ROOT="$(dirname ${0:a:h})"
source $SCWRYPTS_ROOT/.config source $SCWRYPTS_ROOT/.config
@ -12,23 +14,7 @@ __NODE_VERSION=18.0.0
##################################################################### #####################################################################
__DEPENDENCY_ERROR=0 source ${0:a:h}/utils/utils.zsh
__ENVIRONMENT_ERROR=0
source ${0:a:h}/utils/io.zsh
source ${0:a:h}/utils/os.zsh
source ${0:a:h}/utils/credits.zsh
source ${0:a:h}/utils/dependencies.zsh
source ${0:a:h}/utils/environment.zsh
#####################################################################
__CHECK_IMPORTS() {
[[ $__DEPENDENCY_ERROR -eq 0 ]] \
&& [[ $__ENVIRONMENT_ERROR -eq 0 ]] \
|| __FAIL 1 'import error (see output above)' \
;
}
##################################################################### #####################################################################

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
__SUCCESS 'hello world!' __SUCCESS 'hello world!'

View File

@ -1,9 +1,4 @@
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
__CHECK_DEPENDENCIES \
;
__CHECK_ENV_VARS \
;
##################################################################### #####################################################################

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
[ ! -f $SCWRYPTS_CONFIG_PATH/config ] && { [ ! -f $SCWRYPTS_CONFIG_PATH/config ] && {

View File

@ -1,9 +1,4 @@
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
__CHECK_DEPENDENCIES \
;
__CHECK_ENV_VARS \
;
##################################################################### #####################################################################

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
__PROMPT 'choose an environment to copy' __PROMPT 'choose an environment to copy'

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
__PROMPT 'choose an environment to delete' __PROMPT 'choose an environment to delete'

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
[ $SCWRYPTS_ENV ] \ [ $SCWRYPTS_ENV ] \

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
__CHECK_ENV_VARS $@ || NOPROMPT=1 $SCWRYPTS_ROOT/zsh/scwrypts/environment/synchronize __CHECK_ENV_VARS $@ || NOPROMPT=1 $SCWRYPTS_ROOT/zsh/scwrypts/environment/synchronize

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
[ ! $NOPROMPT ] && { [ ! $NOPROMPT ] && {

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
cd $SCWRYPTS_ROOT cd $SCWRYPTS_ROOT

View File

@ -1,9 +1,4 @@
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
__CHECK_DEPENDENCIES \
;
__CHECK_ENV_VARS \
;
##################################################################### #####################################################################

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
cd $SCWRYPTS_ROOT cd $SCWRYPTS_ROOT

View File

@ -1,13 +1,9 @@
_DEPENDENCIES+=(
virtualenv
nodeenv
)
_REQUIRED_ENV+=()
source ${0:a:h}/../common.zsh source ${0:a:h}/../common.zsh
__CHECK_DEPENDENCIES \
virtualenv \
nodeenv \
;
__CHECK_ENV_VARS \
;
##################################################################### #####################################################################
__AVAILABLE_VIRTUALENVS=(python node) __AVAILABLE_VIRTUALENVS=(python node)

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
ENV_TYPE=$(echo $__AVAILABLE_VIRTUALENVS | sed 's/ \+/\n/' | __FZF 'select an environment to refresh') ENV_TYPE=$(echo $__AVAILABLE_VIRTUALENVS | sed 's/ \+/\n/' | __FZF 'select an environment to refresh')

View File

@ -1,6 +1,7 @@
#!/bin/zsh #!/bin/zsh
_DEPENDENCIES+=()
_REQUIRED_ENV+=()
source ${0:a:h}/common.zsh source ${0:a:h}/common.zsh
__CHECK_IMPORTS
##################################################################### #####################################################################
__STATUS 'beginning update for all environments' __STATUS 'beginning update for all environments'

View File

@ -1,4 +1,7 @@
__CREDITS() { __CREDITS() {
# only applicable within scwrypts ("credits" pulled from README files)
[ ! $SCWRYPTS_ROOT ] && return 0
local COMMAND="$1" local COMMAND="$1"
cd $SCWRYPTS_ROOT cd $SCWRYPTS_ROOT
cat ./**/README.md \ cat ./**/README.md \

View File

@ -1,19 +1,15 @@
__CHECK_DEPENDENCIES() { __CHECK_DEPENDENCIES() {
local DEPENDENCY local DEP ERROR=0
for DEPENDENCY in $*
do
__CHECK_DEPENDENCY $DEPENDENCY || ((__DEPENDENCY_ERROR+=1))
done
__CHECK_COREUTILS || ((__DEPENDENCY_ERROR+=$?)) for DEP in $*; do __CHECK_DEPENDENCY $DEP || ((ERROR+=1)); done
__CHECK_COREUTILS || ((ERROR+=$?))
return $__DEPENDENCY_ERROR return $ERROR
} }
__CHECK_DEPENDENCY() { __CHECK_DEPENDENCY() {
local DEPENDENCY="$1" local DEPENDENCY="$1"
[ ! $DEPENDENCY ] && return 1 [ ! $DEPENDENCY ] && return 1
command -v $DEPENDENCY >/dev/null 2>&1 || { command -v $DEPENDENCY >/dev/null 2>&1 || {
__ERROR "'$1' required but not installed. $(__CREDITS $1)" __ERROR "'$1' required but not installed. $(__CREDITS $1)"
return 1 return 1

View File

@ -1,14 +1,7 @@
__CHECK_ENV_VARS() { __CHECK_REQUIRED_ENV() {
local OPTIONAL=0 local VAR ERROR=0
[[ $1 =~ ^--optional$ ]] && { shift 1; OPTIONAL=1; } for VAR in $*; do __CHECK_ENV_VAR $VAR_NAME || ((ERROR+=1)); done
return $ERROR
local VAR_NAME
for VAR_NAME in $*
do
__CHECK_ENV_VAR $VAR_NAME $OPTIONAL || ((__ENVIRONMENT_ERROR+=1))
done
return $__ENVIRONMENT_ERROR
} }
__CHECK_ENV_VAR() { __CHECK_ENV_VAR() {

29
zsh/utils/utils.zsh Normal file
View File

@ -0,0 +1,29 @@
#####################################################################
_DEPENDENCIES+=(fzf) # (extensible) list of PATH dependencies
_REQUIRED_ENV+=() # (extensible) list of required environment variables
#####################################################################
source ${0:a:h}/io.zsh
source ${0:a:h}/os.zsh
source ${0:a:h}/credits.zsh
#####################################################################
IMPORT_ERROR=0
source ${0:a:h}/dependencies.zsh
_DEPENDENCIES=($(echo $_DEPENDENCIES | sort -u))
__CHECK_DEPENDENCIES $_DEPENDENCIES || ((IMPORT_ERROR+=$?))
source ${0:a:h}/environment.zsh
_REQUIRED_ENV=($(echo $__CHECK_REQUIRED_ENV | sort -u))
__CHECK_REQUIRED_ENV $_REQUIRED_ENV || ((IMPORT_ERROR+=$?))
[[ $IMPORT_ERROR -eq 0 ]] || {
__ERROR "encountered $IMPORT_ERROR import error(s)"
return 1
}
#####################################################################