diff options
Diffstat (limited to 'lib/subcommands')
-rw-r--r-- | lib/subcommands/var.bash | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/subcommands/var.bash b/lib/subcommands/var.bash new file mode 100644 index 0000000..60bfe81 --- /dev/null +++ b/lib/subcommands/var.bash @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2022 Patrick Spek <p.spek@tyil.nl> +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +subcommand() +{ + local key + local value + + # TODO: Handle opts + + key="$1" ; shift + value="$1" ; shift + + if [[ -z "$key" ]] + then + emerg "bashtard/var" "You must supply a key" + return 3 + fi + + if [[ -z "$value" ]] + then + # Just show the value of the given key + printf "%s=%s\n" "$key" "$(config "$key")" + return + fi + + # Set the var for this specific host + local kvfile + local buffer + + kvfile="$BASHTARD_ETCDIR/hosts.d/${BASHTARD_PLATFORM[fqdn]}" + buffer="$(tmpfile)" + + grep -v "^$key=" < "$kvfile" > "$buffer" + printf "%s=%s\n" "$key" "$value" >> "$buffer" + sort "$buffer" > "$kvfile" +} |