02025b6c by Adam Heath

Refactor to older versions of bash that don't have associative array

support, so that this works on OS/X.
1 parent b40395da
Showing 1 changed file with 19 additions and 14 deletions
#!/usr/bin/env bash
# OS/X does not include GPLv3 versions of bash, which precludes
# use of associative array support.
set -e
declare -A defaults=(
[INKLUSTER_IMAGE]=brainfood/inkluster-dev
[INKLUSTER_VOLUME_NAME]=""
)
DEFAULT_INKLUSTER_IMAGE=brainfood/inkluster-dev
DEFAULT_INKLUSTER_VOLUME_NAME=""
if [[ -e values/apiserver-env.yaml ]]; then
buildName="$(sed -n -e 's/^buildName: "\(.*\)"$/\1/p' "values/apiserver-env.yaml")"
[[ $buildName ]] && DEFAULT_INKLUSTER_VOLUME_NAME="$buildName"
fi
declare -a config_keys=(INKLUSTER_IMAGE INKLUSTER_VOLUME_NAME)
declare -a config_files=()
if [[ -e .inkluster.env ]]; then
config_files+=("$PWD/.inkluster.env")
fi
declare -A config=()
# This copies ENV settings into the config, that haven't been set on the command line.
for setting in "${!defaults[@]}"; do
[[ ${!setting} ]] && eval config[$setting]="${!setting}"
for setting in "${config_keys[@]}"; do
[[ ${!setting} ]] && eval CONFIG_$setting='"${!'setting'}"'
done
declare -a REST=()
......@@ -28,11 +31,11 @@ while [[ $# -gt 0 ]]; do
shift 2
;;
(-i)
config[INKLUSTER_IMAGE]="$2"
CONFIG_INKLUSTER_IMAGE="$2"
shift 2
;;
(-v)
config[INKLUSTER_VOLUME_NAME]="$2"
CONFIG_INKLUSTER_VOLUME_NAME="$2"
shift 2
;;
(*)
......@@ -57,10 +60,12 @@ for config_file in "${config_files[@]}"; do
done
# Any settings read from the config files, but not yet set, get applied.
for setting in "${!defaults[@]}"; do
[[ -n ${!setting} && -z ${config[$setting]} ]] && eval config[$setting]="${!setting}"
[[ -z ${config[$setting]} ]] && eval config[$setting]="${defaults[$setting]}"
eval $setting=\"\${config[$setting]}\"
for setting in "${config_keys[@]}"; do
if eval [[ '${CONFIG_'$setting'}' ]]; then
eval $setting='"${CONFIG_'$setting'}"'
else
[[ -z ${!setting} ]] && eval $setting='"${DEFAULT_'$setting'}"'
fi
done
has_volume=
......