Files
scwrypts/zsh/lib/utils/environment.zsh
T

40 lines
986 B
Bash
Raw Normal View History

2022-05-24 10:26:05 -06:00
__CHECK_REQUIRED_ENV() {
local SCWRYPTS_LOG_LEVEL=1
2022-05-24 10:26:05 -06:00
local VAR ERROR=0
2023-02-21 18:44:27 -07:00
REQUIRED_ENV=($(echo $REQUIRED_ENV | sed 's/\s\+/\n/g' | sort -u))
for VAR in ${REQUIRED_ENV[@]}; do __CHECK_ENV_VAR $VAR || ((ERROR+=1)); done
2022-05-24 10:26:05 -06:00
return $ERROR
2022-04-28 16:09:23 -06:00
}
__CHECK_ENV_VAR() {
local NAME="$1"
2022-06-22 12:17:19 -06:00
[ ! $NAME ] && return 1
2023-01-11 17:09:59 -07:00
local OVERRIDE_VALUE=$(eval echo '$'$NAME'__override')
[ $OVERRIDE_VALUE ] && export $NAME=$OVERRIDE_VALUE && return 0
2022-04-28 16:09:23 -06:00
local OPTIONAL="$2"
local DEFAULT_VALUE="$3"
local VALUE=$(eval echo '$'$NAME)
[ $VALUE ] && return 0
2023-02-21 18:44:27 -07:00
local SELECTION_VALUES=$(eval echo '$'$NAME'__select' | sed 's/,/\n/g; s/ /\n/g')
[[ $ERROR -eq 0 ]] && [[ ${#SELECTION_VALUES[@]} -gt 0 ]] && {
local SELECTION=$(echo $SELECTION_VALUES | FZF "select a value for '$NAME'")
2022-09-01 07:39:14 -06:00
[ $SELECTION ] && {
export $NAME=$SELECTION
return 0
}
2022-08-22 16:04:03 -06:00
}
[ $VALUE ] && return 0
2022-04-28 16:09:23 -06:00
[ $OPTIONAL ] && {
[ $DEFAULT_VALUE ] && $NAME="$DEFAULT_VALUE"
return 0
2022-06-22 12:17:19 -06:00
} || {
2023-08-24 17:09:30 -06:00
ERROR "variable '$NAME' required"
2022-06-22 12:17:19 -06:00
return 1
2022-04-28 16:09:23 -06:00
}
}