| #!/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 |