scwrypts/zsh/utils/environment.zsh
yage 7617c938b1 v2.8.0
=====================================================================

--- Changes ------------------------------

- python library functions moved to `py/lib`
- python scwrypts renamed in kebob-case to help prevent import
- __name__ == '__main__' enforced on all python scwrypts

--- New Features -------------------------

- `__override` variables now allow values to be force-overwritten
- py.lib.http.client provides a slim `requests.request` wrapper

--- New Scripts --------------------------

py/data/convert )
  quick data converters
   - csv-to-json
   - csv-to-yaml
   - json-to-csv
   - json-to-yaml
   - yaml-to-csv
   - yaml-to-json

py/linear )
  uses the linear.app graphql API for PM tasks
   - comment

--- Bug Fixes ----------------------------

- `scwrypts` handles arguments with quotes and special characters
2023-02-13 21:57:17 -07:00

50 lines
1.1 KiB
Bash

__CHECK_REQUIRED_ENV() {
local VAR ERROR=0
for VAR in $*; do __CHECK_ENV_VAR $VAR || ((ERROR+=1)); done
return $ERROR
}
__CHECK_ENV_VAR() {
local NAME="$1"
[ ! $NAME ] && return 1
local OVERRIDE_VALUE=$(eval echo '$'$NAME'__override')
[ $OVERRIDE_VALUE ] && export $NAME=$OVERRIDE_VALUE && return 0
local OPTIONAL="$2"
local DEFAULT_VALUE="$3"
local VALUE=$(eval echo '$'$NAME)
[ $VALUE ] && return 0
local SELECTION_VALUES=$(eval echo '$'$NAME'__select' | sed 's/,/\n/g')
[ $SELECTION_VALUES ] && {
local SELECTION=$(echo $SELECTION_VALUES | __FZF "select a value for '$NAME'")
[ $SELECTION ] && {
export $NAME=$SELECTION
return 0
}
}
[ $VALUE ] && return 0
[ $__SCWRYPT ] && {
# scwrypts exclusive (missing vars staged in env.template)
local LINE="export $NAME="
grep -q -- "^$LINE" "$__ENV_TEMPLATE" || {
__STATUS 'staging new variable in template'
echo "$LINE" >> "$__ENV_TEMPLATE" \
&& __RUN_SCWRYPT zsh/scwrypts/environment/synchronize -- --no-prompt
}
}
[ $OPTIONAL ] && {
[ $DEFAULT_VALUE ] && $NAME="$DEFAULT_VALUE"
return 0
} || {
__ERROR "'$NAME' required"
return 1
}
}