From 6e18c205e9b79454b2de81aa6ad0d02e90d805cf Mon Sep 17 00:00:00 2001 From: jutty Date: Sun, 14 Jul 2024 06:16:56 -0300 Subject: [PATCH 1/5] Add package tracking functions --- src/index.sh | 1 + src/package/package_conflict_resolution.sh | 12 ++++++++++++ src/package/package_manager.sh | 1 - src/package/package_tracking.sh | 17 +++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/package/package_tracking.sh diff --git a/src/index.sh b/src/index.sh index 247e978..17e9813 100644 --- a/src/index.sh +++ b/src/index.sh @@ -5,5 +5,6 @@ . "$TORI_ROOT/src/package/package_manager.sh" . "$TORI_ROOT/src/package/package_conflict_resolution.sh" +. "$TORI_ROOT/src/package/package_tracking.sh" . "$TORI_ROOT/src/package/validate_input_packages.sh" . "$TORI_ROOT/src/package/update_package_cache.sh" diff --git a/src/package/package_conflict_resolution.sh b/src/package/package_conflict_resolution.sh index df8fff7..a6789e8 100644 --- a/src/package/package_conflict_resolution.sh +++ b/src/package/package_conflict_resolution.sh @@ -48,6 +48,12 @@ not_on_configuration_dialog() { else not_on_configuration_dialog "$conflicted_packages" fi + elif [ "$strategy" = 3 ]; then + track_packages "$conflicted_packages" + elif [ "$strategy" = 4 ]; then + read -r -p "Enter space-separated packages to add to the configuation: " input_packages + log debug "Input: input_packages = $input_packages" + track_packages "$input_packages" else log debug "[resolve_packages] Unexpected input: $strategy" not_on_configuration_dialog "$conflicted_packages" @@ -81,6 +87,12 @@ not_installed_dialog() { else not_on_configuration_dialog "$conflicted_packages" fi + elif [ "$strategy" = 3 ]; then + untrack_packages "$conflicted_packages" + elif [ "$strategy" = 4 ]; then + read -r -p "Enter space-separated packages to remove from the configuation: " input_packages + log debug "Input: input_packages = $input_packages" + untrack_packages "$input_packages" else log debug "[resolve_packages] Unexpected input: $strategy" not_installed_dialog "$conflicted_packages" diff --git a/src/package/package_manager.sh b/src/package/package_manager.sh index 2f99321..10930ca 100644 --- a/src/package/package_manager.sh +++ b/src/package/package_manager.sh @@ -1,6 +1,5 @@ package_manager() { local command="$1" - local output local manager local authorizer="sudo" diff --git a/src/package/package_tracking.sh b/src/package/package_tracking.sh new file mode 100644 index 0000000..97ece67 --- /dev/null +++ b/src/package/package_tracking.sh @@ -0,0 +1,17 @@ +track_packages() { + local packages="$1" + + validate_input_packages "$packages" + + echo "$packages" | xargs | sed 's/ /\n/g' | while read -r package; do + echo "$package" >> "$CONFIG_ROOT/packages" + done +} + +untrack_packages() { + local packages="$1" + + echo "$packages" | xargs | sed 's/ /\n/g' | while read -r package; do + sed -i '' "/^$package$/d" "$CONFIG_ROOT/packages" + done +} From f1361bbad2c4a1aea781e284470b303a523f97b4 Mon Sep 17 00:00:00 2001 From: jutty Date: Sun, 14 Jul 2024 06:50:14 -0300 Subject: [PATCH 2/5] Continue prompting until conflict is resolved --- src/package/package_conflict_resolution.sh | 16 ++++++++++------ src/package/package_tracking.sh | 2 -- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/package/package_conflict_resolution.sh b/src/package/package_conflict_resolution.sh index a6789e8..9dc5233 100644 --- a/src/package/package_conflict_resolution.sh +++ b/src/package/package_conflict_resolution.sh @@ -45,19 +45,23 @@ not_on_configuration_dialog() { log debug "Input: input_packages = $input_packages" if validate_input_packages "$input_packages"; then package_manager uninstall "$input_packages" - else - not_on_configuration_dialog "$conflicted_packages" fi elif [ "$strategy" = 3 ]; then - track_packages "$conflicted_packages" + if validate_input_packages "$conflicted_packages"; then + track_packages "$conflicted_packages" + fi elif [ "$strategy" = 4 ]; then read -r -p "Enter space-separated packages to add to the configuation: " input_packages log debug "Input: input_packages = $input_packages" - track_packages "$input_packages" + if validate_input_packages "$input_packages"; then + track_packages "$input_packages" + fi else log debug "[resolve_packages] Unexpected input: $strategy" not_on_configuration_dialog "$conflicted_packages" fi + + check } not_installed_dialog() { @@ -84,8 +88,6 @@ not_installed_dialog() { log debug "Input: input_packages = $input_packages" if validate_input_packages "$input_packages"; then package_manager install "$input_packages" - else - not_on_configuration_dialog "$conflicted_packages" fi elif [ "$strategy" = 3 ]; then untrack_packages "$conflicted_packages" @@ -97,4 +99,6 @@ not_installed_dialog() { log debug "[resolve_packages] Unexpected input: $strategy" not_installed_dialog "$conflicted_packages" fi + + check } diff --git a/src/package/package_tracking.sh b/src/package/package_tracking.sh index 97ece67..f011270 100644 --- a/src/package/package_tracking.sh +++ b/src/package/package_tracking.sh @@ -1,8 +1,6 @@ track_packages() { local packages="$1" - validate_input_packages "$packages" - echo "$packages" | xargs | sed 's/ /\n/g' | while read -r package; do echo "$package" >> "$CONFIG_ROOT/packages" done From aa3b2fc8768c9d5bbc620de62c42aaad6a169b6f Mon Sep 17 00:00:00 2001 From: jutty Date: Sun, 14 Jul 2024 06:53:29 -0300 Subject: [PATCH 3/5] Update version and changelog --- CHANGELOG | 1 + tori | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index c7090b5..9e9ba63 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +0.4.0 2024-07-14: "Add/remove all from configuration" resolution strategy 0.3.1 2024-07-13: Refactor, new docs page, make cache refresh lazier 0.3.0 2024-07-11: "Enter packages to install/uninstall" resolution strategy 0.2.1 2024-07-10: Rename package_resolution.sh, document package conflicts diff --git a/tori b/tori index 075adfe..05b7417 100755 --- a/tori +++ b/tori @@ -2,7 +2,7 @@ main() { # paths - VERSION="0.3.1 2024-07-13" + VERSION="0.4.0 2024-07-14" TORI_ROOT="$HOME/.local/share/tori" CONFIG_ROOT="$HOME/.config/tori" TMP_DIR="/tmp/tori" From cae379cbcbdfe6a3f0bc347e2d22d2cec79516aa Mon Sep 17 00:00:00 2001 From: jutty Date: Sun, 14 Jul 2024 07:15:42 -0300 Subject: [PATCH 4/5] Fix cancel option not exiting function --- src/package/package_conflict_resolution.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/package/package_conflict_resolution.sh b/src/package/package_conflict_resolution.sh index 9dc5233..e73a8d6 100644 --- a/src/package/package_conflict_resolution.sh +++ b/src/package/package_conflict_resolution.sh @@ -38,6 +38,7 @@ not_on_configuration_dialog() { if [ "$strategy" = 6 ]; then log debug "[resolve_packages] User choice: Cancel or empty" + return 0 elif [ "$strategy" = 1 ]; then package_manager uninstall "$conflicted_packages" elif [ "$strategy" = 2 ]; then @@ -81,6 +82,7 @@ not_installed_dialog() { if [ "$strategy" = 6 ]; then log debug "[resolve_packages] User choice: Cancel or empty" + return 0 elif [ "$strategy" = 1 ]; then package_manager install "$conflicted_packages" elif [ "$strategy" = 2 ]; then From e95eefe66621201cb546166294ed9696339d8407 Mon Sep 17 00:00:00 2001 From: jutty Date: Sun, 14 Jul 2024 07:16:02 -0300 Subject: [PATCH 5/5] Fix trailing whitespace preventing package match --- CHANGELOG | 2 ++ src/package/package_tracking.sh | 5 ++++- tori | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 9e9ba63..9c917a9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +0.4.1 2024-07-14: Fixes "Cancel" option not exiting on package resolution + Fixes whitespace preventing package list matches on "remove all" 0.4.0 2024-07-14: "Add/remove all from configuration" resolution strategy 0.3.1 2024-07-13: Refactor, new docs page, make cache refresh lazier 0.3.0 2024-07-11: "Enter packages to install/uninstall" resolution strategy diff --git a/src/package/package_tracking.sh b/src/package/package_tracking.sh index f011270..f8eeb06 100644 --- a/src/package/package_tracking.sh +++ b/src/package/package_tracking.sh @@ -9,7 +9,10 @@ track_packages() { untrack_packages() { local packages="$1" + log debug "[untrack_packages] Removing packages: $packages" + echo "$packages" | xargs | sed 's/ /\n/g' | while read -r package; do - sed -i '' "/^$package$/d" "$CONFIG_ROOT/packages" + sed -i '' "/^[[:space:]]*$package[[:space:]]*$/d" "$CONFIG_ROOT/packages" + log debug "[untrack_packages] Executed removal for $package with exit code $?" done } diff --git a/tori b/tori index 05b7417..261c82b 100755 --- a/tori +++ b/tori @@ -2,7 +2,7 @@ main() { # paths - VERSION="0.4.0 2024-07-14" + VERSION="0.4.1 2024-07-14" TORI_ROOT="$HOME/.local/share/tori" CONFIG_ROOT="$HOME/.config/tori" TMP_DIR="/tmp/tori"