From 50b197935ee39ac9efd472dd7b3de5e497db4ea4 Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Mon, 23 May 2022 13:02:23 +0200 Subject: Add config_subkeys --- lib/util/config.bash | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'lib') diff --git a/lib/util/config.bash b/lib/util/config.bash index 3f939ff..91d5c83 100644 --- a/lib/util/config.bash +++ b/lib/util/config.bash @@ -10,6 +10,10 @@ config() { config_for "${BASHTARD_PLATFORM[fqdn]}" "$@" } +config_subkeys() { + config_subkeys_for "${BASHTARD_PLATFORM[fqdn]}" "$@" +} + config_for() { local host=$1 ; shift local key=$1 ; shift @@ -68,3 +72,43 @@ config_for() { # Error alert "bashtard/config_for" "No configuration value for $key" } + +config_subkeys_for() { + local host=$1 ; shift + local key=$1 ; shift + + local file + local files + + files=( + "$BASHTARD_ETCDIR/secrets" + "$BASHTARD_ETCDIR/hosts.d/$host" + "$BASHTARD_ETCDIR/os.d/${BASHTARD_PLATFORM[key]}" + "$BASHTARD_ETCDIR/defaults" + ) + + if [[ -n "$BASHTARD_PLAYBOOK" ]] + then + debug "bashtard/config_for" "BASHTARD_PLAYBOOK=$BASHTARD_PLAYBOOK, adding etc entries" + files+=( + "$BASHTARD_ETCDIR/playbooks.d/$BASHTARD_PLAYBOOK/etc/os.d/${BASHTARD_PLATFORM[key]}" + "$BASHTARD_ETCDIR/playbooks.d/$BASHTARD_PLAYBOOK/etc/defaults" + ) + fi + + files+=( + "$BASHTARD_SHAREDIR/os.d/${BASHTARD_PLATFORM[key]}" + "$BASHTARD_SHAREDIR/defaults" + ) + + # Check configuration files + for file in "${files[@]}" + do + debug "bashtard/config_subkeys" "Checking for subkeys of '$key' in '$file'" + + [[ ! -f $file ]] && continue + + grep "^$key\." "$file" \ + | awk -F= '{ print $1 }' + done +} -- cgit v1.1