27 lines
870 B
Bash
27 lines
870 B
Bash
|
#!/bin/bash
|
||
|
|
||
|
set -euo pipefail
|
||
|
|
||
|
# All paths from this point on are relative to the directory containing this
|
||
|
# script, for simplicity's sake.
|
||
|
cd "$( dirname "${BASH_SOURCE[0]}" )"
|
||
|
|
||
|
# Read the config file using hcldec and then use jq to extract values in a
|
||
|
# shell-friendly form. jq will ensure that the values are properly quoted and
|
||
|
# escaped for consumption by the shell.
|
||
|
CONFIG_VARS="$(hcldec --spec=spec.hcldec example.conf | jq -r '@sh "NAME=\(.name) GREETING=\(.greeting) FRIENDS=(\(.friends))"')"
|
||
|
if [ $? != 0 ]; then
|
||
|
# If hcldec or jq failed then it has already printed out some error messages
|
||
|
# and so we can bail out.
|
||
|
exit $?
|
||
|
fi
|
||
|
|
||
|
# Import our settings into our environment
|
||
|
eval "$CONFIG_VARS"
|
||
|
|
||
|
# ...and now, some contrived usage of the settings we loaded:
|
||
|
echo "$GREETING $NAME!"
|
||
|
for name in ${FRIENDS[@]}; do
|
||
|
echo "$GREETING $name, too!"
|
||
|
done
|