summaryrefslogtreecommitdiff
path: root/src/lib/conf.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/conf.sh.in')
-rw-r--r--src/lib/conf.sh.in50
1 files changed, 21 insertions, 29 deletions
diff --git a/src/lib/conf.sh.in b/src/lib/conf.sh.in
index 18760e1..7d1646b 100644
--- a/src/lib/conf.sh.in
+++ b/src/lib/conf.sh.in
@@ -104,22 +104,26 @@ list_envvars() {
# High-level generic functions #################################################
-# Usage: load_files $slug
-# Loads the configuration files for $slug in the proper order.
-load_files() {
- local slug=$1
- local var
- local file
+# Usage: load_conf $slug.conf [VAR1 VAR2...]
+#
+# Loads the configuration files for $slug in the proper order, and
+# optionally verify that certain variables are set.
+load_conf() {
+ [[ "$1" = *.conf ]] || libremessages panic || exit 1
+ local slug=${1%.conf}
+ shift
+
+ local var file
# Save the existing versions at _VARNAME
while read -r var; do
- [[ -n ${!var:-} ]] && eval "_$var=\${$var}"
+ [[ -n ${!var:-} ]] && eval "local _$var=\${$var}"
done < <(list_envvars "$slug")
# Load the files
while read -r file; do
if [[ -r $file ]]; then
- . "$file" || return 1
+ . "$file" || return 6
fi
done < <(list_files "$slug")
@@ -127,33 +131,21 @@ load_files() {
while read -r var; do
eval "$var=\${_$var:-\${$var:-}}"
done < <(list_envvars "$slug")
-}
-
-# Usage: check_vars $slug VAR1 VAR2...
-# Check whether the variables listed are properly set.
-# If not, it prints a message saying to set them in the configuration file(s)
-# for $slug.
-check_vars() {
- local slug=$1; shift
- local ret=0
-
- local VAR
- for VAR in "$@"; do
- if [[ -z ${!VAR:-} ]]; then
+ # Verify that the variables we need were set
+ declare -i ret=0
+ for var in "$@"; do
+ if [[ -z ${!var:-} ]]; then
if [[ $(list_files "$slug"|wc -l) -gt 1 ]]; then
- libremessages _l print "Configure '%s' in one of:" "$VAR"
+ libremessages _l print "Configure '%s' in one of:" "$var"
list_files "$slug" | sed 's/./ -> &/'
else
- libremessages _l print "Configure '%s' in '%s'" "$VAR" "$(list_files "$slug")"
+ libremessages _l print "Configure '%s' in '%s'" "$var" "$(list_files "$slug")"
fi
- ret=1
+ ret=6
fi
done >&2
-
- if [[ $ret != 0 ]]; then
- return 1
- fi
+ return $ret
}
# Usage: get_var <slug> <var_name> <default_value>
@@ -163,7 +155,7 @@ get_var() (
local slug=$1
local setting=$2
local default=$3
- load_files "$slug"
+ load_conf "$slug.conf"
printf '%s' "${!setting:-${default}}"
)