simplified and refactored chore/single chore workflow

This commit is contained in:
2024-10-02 17:14:59 +03:00
parent 6c8d80f1a8
commit c356b1765b
3 changed files with 53 additions and 77 deletions

79
reve.sh
View File

@@ -3,17 +3,19 @@
# reve desktop environment framework
# Yigid BALABAN <fyb@fybx.dev> 2024
# shellcheck disable=SC2086
# SC2086 is disabled here, but all user inputs must be quoted
in_desktop_mode=""
in_reason=""
in_chore_name=""
rt_script_dir=$(realpath "$(dirname "$0")")
rt_has_mode_changed=0
rt_current_mode="unset"
reve_folder="$HOME/.config/reve"
reve_desktop_mode="$reve_folder/desktop_mode"
reve_time_day="$reve_folder/time_day"
reve_time_night="$reve_folder/time_night"
reve_chores_mode="$rt_script_dir/chores/mode"
@@ -54,10 +56,6 @@ util_help () {
esac
}
util_mkdirs () {
mkdir -p "$reve_folder"
}
f_shell_completion () {
if [ "$in_shell_comp" == "fish" ]; then
cp "$rt_script_dir/completions/reve.fish" "$HOME/.config/fish/completions/reve.fish"
@@ -71,10 +69,6 @@ f_shell_completion () {
if ! grep -q "_reve_completions" "$HOME/.bash_completion"; then
echo "$_reve_completions" >> "$HOME/.bash_completion"
fi
if [ -n "$BASH_SOURCE" ]; then
source "$HOME/.bash_completion"
fi
fi
}
@@ -84,44 +78,34 @@ set_desktop_mode () {
return 1 # since mode has changed
fi
local current_mode="unset"
local previous_mode day_start night_start num_day num_night current_time
previous_mode=$( util_readf "$reve_desktop_mode" )
day_start=$( util_readf "$reve_time_day" )
night_start=$( util_readf "$reve_time_night" )
num_day=$( awk -F: '{print $1 * 60 + $2}' <<< "$day_start" )
num_night=$( awk -F: '{print $1 * 60 + $2}' <<< "$night_start" )
local previous_mode num_day num_night current_time
previous_mode=$( util_read_config base.desktop_mode )
num_day=$( awk -F: '{print $1 * 60 + $2}' <<< "$( util_read_config base.time_day )" )
num_night=$( awk -F: '{print $1 * 60 + $2}' <<< "$( util_read_config base.time_night )" )
current_time=$( awk -F: '{print $1 * 60 + $2}' <<< "$(date +%H:%M)" )
if ((num_night > current_time && current_time >= num_day)); then
current_mode="light"
rt_current_mode="light"
else
current_mode="dark"
rt_current_mode="dark"
fi
echo "[reve] [I] Setting the mode: $current_mode"
echo "$current_mode" > "$reve_desktop_mode"
echo "[reve] [I] Setting the mode: $rt_current_mode"
echo "$rt_current_mode" > "$reve_desktop_mode"
if [ "$current_mode" == "$previous_mode" ]; then
if [ "$rt_current_mode" == "$previous_mode" ]; then
return 0 # since mode did not change
else
return 1
fi
}
prepare () {
util_mkdirs
set_desktop_mode
rt_has_mode_changed="$?"
echo $rt_has_mode_changed
}
# Called when the mode (the default state, is either dark or light) changes
chores_mode () {
for file in "$reve_chores_mode"/*; do
if [ -x "$file" ]; then
echo "[reve] [I] Running chore: $( basename "$file" )"
bash "$file"
util_run_chore "$file" $rt_current_mode
else
echo "[reve] [E] chores_mode: $file is not executable"
fi
@@ -129,7 +113,9 @@ chores_mode () {
}
util_handle_pos () {
local forced_mode
# args: $@ -- handles positionals
# returns: 'light' or 'dark' depending on positionals or $rt_current_mode
local forced_mode=$rt_current_mode
for arg in "$@"; do
if [[ "$arg" == "-d" || "$arg" == "--dark" ]]; then
forced_mode="dark"
@@ -137,10 +123,7 @@ util_handle_pos () {
forced_mode="light"
fi
done
if [[ $( util_read_config base.desktop_mode ) != "$forced_mode" ]]; then
util_write_config "$forced_mode"
fi
echo $forced_mode
}
sub_config () {
@@ -158,18 +141,24 @@ sub_config () {
util_help config
;;
*)
echo "[reve] [E] in subcommand config: '$1' is not a valid command"
echo "reve: in subcommand config: '$1' is not a valid command"
;;
esac
}
main () {
if (( rt_has_mode_changed == 1 )) || [[ "$in_reason" == "chores_mode" ]]; then
chores_mode
fi
mkdir -p "$reve_folder"
if [[ "$in_chore_name" != "" ]]; then
util_run_chore "$in_chore_name"
forced_mode=$(util_handle_pos "$@")
util_run_chore "$in_chore_name" $forced_mode
return
fi
set_desktop_mode
rt_has_mode_changed="$?"
if (( rt_has_mode_changed == 1 )) || [[ "$in_reason" == "chores_mode" ]]; then
chores_mode
fi
}
@@ -202,10 +191,7 @@ case "$1" in
in_reason="$2"
;;
chore)
util_handle_pos "$@"
util_run_chore "$2"
util_toggle_dm
exit 0
in_chore_name="$2"
;;
poll)
;;
@@ -214,10 +200,9 @@ case "$1" in
exit 0
;;
*)
echo "Invalid command or subcommand: $1"
echo "reve: invalid command or subcommand: $1"
exit 1
;;
esac
prepare "$@"
main
main "$@"