summaryrefslogtreecommitdiff
path: root/.app/lib/app-conf
diff options
context:
space:
mode:
Diffstat (limited to '.app/lib/app-conf')
-rw-r--r--.app/lib/app-conf33
1 files changed, 25 insertions, 8 deletions
diff --git a/.app/lib/app-conf b/.app/lib/app-conf
index 39b2e0d..c9204e9 100644
--- a/.app/lib/app-conf
+++ b/.app/lib/app-conf
@@ -1,7 +1,19 @@
#!/bin/bash
+# TODO: Add a 'get' method that returns a single value
+# Exit with 0 if found, 1 otherwise.
+
key_expr="[a-zA-Z][_a-zA-Z0-9]*\.[a-zA-Z][_a-zA-Z0-9]*"
+format_conf() {
+ local IFS==
+ while read key value
+ do
+ printf "%-20s %-20s" "$key" "$value"
+ echo
+ done
+}
+
get_conf() {
local BASEDIR=$1
local name=$2
@@ -54,8 +66,7 @@ get_conf_in_group() {
local instance=$3
local group=$4
- get_conf_all "$BASEDIR" "$name" "$instance" | \
- sed -n "s,^[ ]*${group}\.\([._a-zA-Z]*\)=\(.*\)$,\1=\2,p"
+ get_conf_all "$BASEDIR" "$name" "$instance" | sed -n "s,^${group}\.\(.*\),\1,p"
}
assert_key() {
@@ -107,11 +118,7 @@ method_conf_list() {
local name=$1; shift
local instance=$1; shift
- get_conf_all "$BASEDIR" "$name" "$instance" | (IFS==; while read key value
- do
- printf "%-20s %-20s" "$key" "$value"
- echo
- done)
+ get_conf_all "$BASEDIR" "$name" "$instance" | format_conf
}
method_conf_usage() {
@@ -123,7 +130,8 @@ method_conf_usage() {
echo "usage: $0 conf <method>" >&2
echo ""
echo "Available methods:" >&2
- echo " get - list all configuration parameters" >&2
+ echo " list - list all configuration values" >&2
+ echo " list-group [group] - list all configuration values in the specified group" >&2
echo " set [group.key] [value] - set a configuration parameter" >&2
echo " delete [group.key] - deletes a configuration parameter" >&2
exit 1
@@ -151,6 +159,15 @@ method_conf() {
method_conf_list "$name" "$instance"
;;
+ list-group)
+ if [ $# -ne 1 ]
+ then
+ method_conf_usage
+ exit 1
+ fi
+
+ get_conf_in_group "$BASEDIR" "$name" "$instance" "$1" | format_conf
+ ;;
set)
if [ $# -ne 2 ]
then