90 lines
2.2 KiB
Plaintext
90 lines
2.2 KiB
Plaintext
|
#!/bin/zsh
|
|||
|
#
|
|||
|
# a temporary template conversion utility for env.template (<=v4)
|
|||
|
# to env.yaml (>=v5)
|
|||
|
#
|
|||
|
eval $(scwrypts --config)
|
|||
|
use -c scwrypts/environment-files
|
|||
|
|
|||
|
ENVIRONMENT_ROOT="$1"
|
|||
|
[ "$ENVIRONMENT_ROOT" ] || ENVIRONMENT_ROOT="${0:a:h}"
|
|||
|
|
|||
|
OLDENV="$ENVIRONMENT_ROOT/env.template"
|
|||
|
NEWENV="$ENVIRONMENT_ROOT/env.yaml"
|
|||
|
ENVMAP="$ENVIRONMENT_ROOT/.map.txt"
|
|||
|
|
|||
|
GROUP="$2"
|
|||
|
[ $GROUP ] || GROUP=scwrypts
|
|||
|
GENERATE_TEMPLATE \
|
|||
|
| sed '1,4d; /^$/d' \
|
|||
|
| sed -z 's/# \([^\n]*\)\n\([^\n]*\)=/\2=\n\2=DESCRIPTION=\1/g' \
|
|||
|
| sed '
|
|||
|
s/^export //
|
|||
|
/./i---
|
|||
|
s/\s\+$//
|
|||
|
s/__/=/g
|
|||
|
s/^\(AWS\|REDIS\)_/\1=/
|
|||
|
s/^\([^=]*\)=\([^=]*\)=\([^=]*\)=\([^=]*\)=\([^=]*\)=$/\L\1:\n \2:\n \3:\n \4:\n \5:/
|
|||
|
s/^\([^=]*\)=\([^=]*\)=\([^=]*\)=\([^=]*\)=$/\L\1:\n \2:\n \3:\n \4:/
|
|||
|
s/^\([^=]*\)=\([^=]*\)=\([^=]*\)=$/\L\1:\n \2:\n \3:/
|
|||
|
s/^\([^=]*\)=\([^=]*\)=$/\L\1:\n \2:/
|
|||
|
s/^\([^=]*\)=$/\L\1:/
|
|||
|
s/^\([^=]*\)=\([^=]*\)=\([^=]*\)=\([^=]*\)=\([^=]*\)=\([^=]\+\)$/\L\1:\n \2:\n \3:\n \4:\n \5: \E\6/
|
|||
|
s/^\([^=]*\)=\([^=]*\)=\([^=]*\)=\([^=]*\)=\([^=]\+\)$/\L\1:\n \2:\n \3:\n \4: \E\5/
|
|||
|
s/^\([^=]*\)=\([^=]*\)=\([^=]*\)=\([^=]\+\)$/\L\1:\n \2:\n \3: \E\4/
|
|||
|
s/^\([^=]*\)=\([^=]*\)=\([^=]\+\)$/\L\1:\n \2: \E\3/
|
|||
|
s/^\([^=]*\)=\([^=]\+\)$/\L\1: \E\2/
|
|||
|
s/: (\(.*\))/: [\1]/
|
|||
|
/^/,/:/{s/_/-/g}
|
|||
|
' \
|
|||
|
| sed '
|
|||
|
s/^ \(description:.*\)/ \1/
|
|||
|
s/description:/.DESCRIPTION:/
|
|||
|
' \
|
|||
|
| sed -z 's/\n\(\s\+\).DESCRIPTION:\([^\n]\+\)/\n\1.DESCRIPTION: >-\n\1 \2/g' \
|
|||
|
| yq eval-all '. as $item ireduce ({}; . *+ $item)' \
|
|||
|
> "$NEWENV" \
|
|||
|
;
|
|||
|
|
|||
|
cat -- "$OLDENV" \
|
|||
|
| sed '
|
|||
|
s/#.*//
|
|||
|
/^$/d
|
|||
|
s/^export //
|
|||
|
s/\s\+$//
|
|||
|
s/^\([^=]*\)=.*/\1=\n\1/
|
|||
|
' \
|
|||
|
| sed '
|
|||
|
/^/s/.*/\L&/
|
|||
|
/^/s/__/./g
|
|||
|
/^/s/_/-/g
|
|||
|
s/^/./
|
|||
|
s/\(aws\|redis\)-/\1./
|
|||
|
' \
|
|||
|
| perl -pe 's/=\n/^/' \
|
|||
|
| column -ts '^' \
|
|||
|
> "$ENVMAP" \
|
|||
|
;
|
|||
|
|
|||
|
while read line
|
|||
|
do
|
|||
|
ENV_VAR=$(echo $line | awk '{print $1;}')
|
|||
|
LOOKUP=$(echo $line | awk '{print $2;}')
|
|||
|
|
|||
|
cp "$NEWENV" "$NEWENV.temp"
|
|||
|
cat "$NEWENV.temp" \
|
|||
|
| yq ". | $LOOKUP.[\".ENVIRONMENT\"] = \"$ENV_VAR\"" \
|
|||
|
| yq 'sort_keys(...)' \
|
|||
|
> "$NEWENV"
|
|||
|
;
|
|||
|
done < "$ENVMAP"
|
|||
|
|
|||
|
rm -- "$NEWENV.temp" "$ENVMAP" &>/dev/null
|
|||
|
|
|||
|
head -n1 -- "$NEWENV" | grep -q "^{}$" && {
|
|||
|
echo '---' > "$NEWENV"
|
|||
|
}
|
|||
|
|
|||
|
cat -- "$NEWENV" | yq
|
|||
|
SUCCESS "new environment saved to '$NEWENV'"
|