From cb1b26770a44bc72bed39822e837d26c65707d05 Mon Sep 17 00:00:00 2001 From: Yigid BALABAN Date: Mon, 26 Aug 2024 22:16:37 +0300 Subject: [PATCH] config subcommand impl. + _reve/util_read_config {config_key} + _reve/util_write_config {config_key} {value} + _reve/util_delete_config {config_key} + let shellcheck know what we're sourcing --- .gitignore | 1 + .shellcheckrc | 1 + _reve.sh | 29 +++++++++++++++++++++++++++++ reve.sh | 27 ++++++++++++++++++++++++--- 4 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 .shellcheckrc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cdda4d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +testbench.sh \ No newline at end of file diff --git a/.shellcheckrc b/.shellcheckrc new file mode 100644 index 0000000..256d0e6 --- /dev/null +++ b/.shellcheckrc @@ -0,0 +1 @@ +external-sources=true \ No newline at end of file diff --git a/_reve.sh b/_reve.sh index 301c7cd..e3f6980 100644 --- a/_reve.sh +++ b/_reve.sh @@ -3,6 +3,10 @@ # reve desktop environment framework # Yigid BALABAN 2024 +# VERY CRITICAL: change this if install.sh is updated +reve_installation="$HOME/.local/bin/reve" +reve_config="$HOME/.config/reve" + util_readf () { local filename=$1 @@ -13,3 +17,28 @@ util_readf () { return 1 fi } + +util_read_config () { + local config_key=$1 + pre_removed_key=${config_key/#base./} + config_path=$( echo "$pre_removed_key" | sed 's/\./\//g' ) + util_readf "$reve_config/$config_path" + return $? +} + +util_write_config () { + local config_key=$1 new_value=$2 + pre_removed_key=${config_key/#base./} + config_path=$( echo "$pre_removed_key" | sed 's/\./\//g' ) + mkdir -p "$( dirname "$reve_config/$config_path" )" + echo "$new_value" > "$reve_config/$config_path" +} + +util_delete_config () { + local config_key=$1 + pre_removed_key=${config_key/#base./} + config_path=$( echo "$pre_removed_key" | sed 's/\./\//g' ) + rm "$reve_config/$config_path" + dir=$( dirname "$reve_config/$config_path") + [ -z "$( ls -A "$dir")" ] && rm -r "$dir" +} diff --git a/reve.sh b/reve.sh index 4e0750b..9637a74 100755 --- a/reve.sh +++ b/reve.sh @@ -18,9 +18,8 @@ reve_time_night="$reve_folder/time_night" reve_chores_mode="$rt_script_dir/chores/mode" # bring reve utility functions to the context -# shellcheck disable=SC1091 +# shellcheck source=_reve.sh source "$rt_script_dir/_reve" >&/dev/null -# shellcheck disable=SC1091 (( $? == 1 )) && source "$rt_script_dir/_reve.sh" # looks like we're in dev environment util_help () { @@ -43,6 +42,7 @@ util_help () { echo "=> Usage" echo "1. reve config get {config_key} get the value stored in file" echo "2. reve config set {config_key} {value} set the value of file" + echo "3. reve config rm {config_key} delete the config file" ;; update) echo "=> Usage: reve update [chore names...] updates chores from upstream" @@ -136,6 +136,27 @@ chores_mode () { done } +sub_config () { + local config_key=$2 + case "$1" in + get) + util_read_config "$config_key" + ;; + set) + util_write_config "$config_key" "$3" + ;; + rm|delete) + util_delete_config "$config_key" + ;; + "") + util_help config + ;; + *) + echo "[reve] [E] in subcommand config: '$1' is not a valid command" + ;; + esac +} + main () { if (( rt_has_mode_changed == 1 )) || [[ "$in_reason" == "chores_mode" ]]; then chores_mode @@ -148,7 +169,7 @@ main () { case "$1" in config) - sub_config + sub_config $2 $3 $4 exit 0 ;; update)