aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2024-06-06 17:09:47 +0300
committerkaotisk <kaotisk@arching-kaos.org>2024-06-06 17:09:47 +0300
commitab9b088ad0c097f803bd489a68a7f45db9af8570 (patch)
tree4fec40ba8679d78585963aed529717aa1f2cf284
parentdef1c0e0360fc87dd49512183dcc1d35c3b388f9 (diff)
downloadarching-kaos-tools-ab9b088ad0c097f803bd489a68a7f45db9af8570.tar.gz
arching-kaos-tools-ab9b088ad0c097f803bd489a68a7f45db9af8570.tar.bz2
arching-kaos-tools-ab9b088ad0c097f803bd489a68a7f45db9af8570.zip
Settings setter getter
-rwxr-xr-xbin/ak-settings45
-rwxr-xr-xlib/_ak_settings95
2 files changed, 140 insertions, 0 deletions
diff --git a/bin/ak-settings b/bin/ak-settings
new file mode 100755
index 0000000..e096ff4
--- /dev/null
+++ b/bin/ak-settings
@@ -0,0 +1,45 @@
+#!/bin/bash
+##
+## Set or get settings for your instance
+##
+## Usage:
+##
+## -h, --help Prints this help message
+##
+fullprogrampath="$(realpath $0)"
+PROGRAM=$(basename $0)
+descriptionString="Settings helper program"
+
+source $AK_LIBDIR/_ak_log
+source $AK_LIBDIR/_ak_script
+source $AK_LIBDIR/_ak_settings
+
+if [ ! -z "$AK_SETTINGS" ] && [ -n "$AK_SETTINGS" ]
+then
+ _ak_log_info "AK_SETTINGS = $AK_SETTINGS"
+else
+ _ak_log_error "No settings variable is set"
+ exit 1
+fi
+
+if [ ! -d "$AK_SETTINGS" ]
+then
+ mkdir $AK_SETTINGS
+ if [ $? -ne 0 ]
+ then
+ _ak_log_error "Failed to create settings directory"
+ exit 1
+ fi
+ _ak_log_info "Created settings directory"
+fi
+
+# Flags to run
+if [ ! -z $1 ]; then
+ case $1 in
+ -h | --help) _ak_usage; exit;;
+ -g | --get) _ak_settings_get "$2" ; exit;;
+ -s | --set) _ak_settings_set "$2" "$3" ; exit;;
+ * ) _ak_usage;;
+ esac
+else _ak_usage
+fi
diff --git a/lib/_ak_settings b/lib/_ak_settings
new file mode 100755
index 0000000..ce0f9c4
--- /dev/null
+++ b/lib/_ak_settings
@@ -0,0 +1,95 @@
+#!/bin/bash
+
+source $AK_LIBDIR/_ak_script
+
+_ak_settings_get(){
+ if [ ! -z "$1" ] && [ -n "$1" ]
+ then
+ cd $AK_SETTINGS
+ echo $1 | grep '\.' > /dev/null 2>&1
+ if [ $? -ne 0 ]
+ then
+ _ak_log_error "No ungrouped settings allowed"
+ exit 1
+ fi
+ subset="$(echo $1 | cut -d '.' -f 1)"
+ echo "$subset" | grep '[.\-\*/~!@#$%^&*()_=\-\>\<,{}[]]' > /dev/null 2>&1
+ if [ $? -eq 0 ]
+ then
+ _ak_log_error "Names containing symbols are not allowed"
+ exit 1
+ fi
+ if [ ! -d $subset ]
+ then
+ _ak_log_error "Subsetting $subset not found"
+ exit 1
+ fi
+ cd $subset
+ label="$(echo $1 | cut -d '.' -f 2-)"
+ echo "$label" | grep '[.\-\*/~!@#$%^&*()_=\-\>\<,{}[]]' > /dev/null 2>&1
+ if [ $? -eq 0 ]
+ then
+ _ak_log_error "Names containing symbols are not allowed"
+ exit 1
+ fi
+ cat $AK_SETTINGS/$subset/$label
+ else
+ cd $AK_SETTINGS
+ find . -type f | while read setting
+ do
+ printf '%s:%s\n' "$(echo $setting| sed -e 's/^\.\///;s/\//./g')" "$(cat $setting)"
+ done
+ fi
+}
+
+_ak_settings_set(){
+ if [ ! -z "$1" ] && [ -n "$1" ]
+ then
+ if [ ! -z "$2" ] && [ -n "$2" ]
+ then
+ cd $AK_SETTINGS
+ echo $1 | grep '\.' > /dev/null 2>&1
+ if [ $? -ne 0 ]
+ then
+ _ak_log_error "No ungrouped settings allowed"
+ exit 1
+ fi
+ subset="$(echo $1 | cut -d '.' -f 1)"
+ echo "$subset" | grep '[.\-\*/~!@#$%^&*()_=\-\>\<,{}[]]' > /dev/null 2>&1
+ if [ $? -eq 0 ]
+ then
+ _ak_log_error "Names containing symbols are not allowed"
+ exit 1
+ fi
+ if [ ! -d $subset ]
+ then
+ mkdir $subset
+ if [ $? -ne 0 ]
+ then
+ _ak_log_error "Could not create $AK_SETTINGS/$subset"
+ exit 1
+ fi
+ fi
+ label="$(echo $1 | cut -d '.' -f 2-)"
+ echo "$label" | grep '[.\-\*/~!@#$%^&*()_=\-\>\<,{}[]]' > /dev/null 2>&1
+ if [ $? -eq 0 ]
+ then
+ _ak_log_error "Names containing symbols are not allowed"
+ exit 1
+ fi
+ printf '%s' "$2" > $AK_SETTINGS/$subset/$label
+ else
+ _ak_log_error "No value provided for $1"
+ fi
+ else
+ _ak_log_error "No value provided to set"
+ fi
+}
+
+_ak_settings_get_sub(){
+ _ak_not_implemented
+}
+
+_ak_settings_get_all(){
+ _ak_not_implemented
+}