mirror of
https://github.com/soulis-1256/assemblrr.git
synced 2026-10-21 14:10:05 +00:00
Clarify and condition leftover cleanup prompts
This commit is contained in:
parent
0115f9d648
commit
dc45fe8db6
2 changed files with 67 additions and 9 deletions
|
|
@ -559,24 +559,47 @@ offer_leftover_cleanup() {
|
|||
leftover=$(list_assemblrr_leftovers || true)
|
||||
[ -n "$leftover" ] || return 0
|
||||
|
||||
local has_install=false
|
||||
local has_media=false
|
||||
if echo "$leftover" | grep -q $'^install\t'; then
|
||||
has_install=true
|
||||
fi
|
||||
if echo "$leftover" | grep -q $'^media\t'; then
|
||||
has_media=true
|
||||
fi
|
||||
|
||||
echo
|
||||
log_warning "Found leftover assemblrr files from an earlier attempt:"
|
||||
log_warning "Found leftover ${APP_DISPLAY_NAME:-assemblrr} files from an earlier attempt:"
|
||||
while IFS=$'\t' read -r kind path; do
|
||||
[ -n "$path" ] || continue
|
||||
log_warning " $path"
|
||||
case "$kind" in
|
||||
install) log_warning " Install: $path" ;;
|
||||
media) log_warning " Media: $path" ;;
|
||||
*) log_warning " $path" ;;
|
||||
esac
|
||||
done <<< "$leftover"
|
||||
|
||||
read -p "Remove leftover install files (keeps media)? (Y/n) [Default = y]: " ans
|
||||
ans=${ans:-y}
|
||||
if [ "${ans,,}" = "y" ]; then
|
||||
while IFS=$'\t' read -r kind path; do
|
||||
[ "$kind" = "install" ] && [ -n "$path" ] && safe_rm_rf "$path"
|
||||
done <<< "$leftover"
|
||||
if [ "$has_install" = true ]; then
|
||||
local prompt_msg="Remove leftover install files? (Y/n) [Default = y]: "
|
||||
if [ "$has_media" = true ]; then
|
||||
prompt_msg="Remove leftover install files (keeps media)? (Y/n) [Default = y]: "
|
||||
fi
|
||||
read -p "$prompt_msg" ans
|
||||
ans=${ans:-y}
|
||||
if [ "${ans,,}" = "y" ]; then
|
||||
while IFS=$'\t' read -r kind path; do
|
||||
[ "$kind" = "install" ] && [ -n "$path" ] && safe_rm_rf "$path"
|
||||
done <<< "$leftover"
|
||||
fi
|
||||
fi
|
||||
|
||||
leftover=$(list_assemblrr_leftovers || true)
|
||||
if echo "$leftover" | grep -q $'^media\t'; then
|
||||
read -p "Also remove leftover media directories? (y/N) [Default = n]: " ans
|
||||
local prompt_media="Remove leftover media directories? (y/N) [Default = n]: "
|
||||
if [ "$has_install" = true ]; then
|
||||
prompt_media="Also remove leftover media directories? (y/N) [Default = n]: "
|
||||
fi
|
||||
read -p "$prompt_media" ans
|
||||
ans=${ans:-n}
|
||||
if [ "${ans,,}" = "y" ]; then
|
||||
while IFS=$'\t' read -r kind path; do
|
||||
|
|
|
|||
|
|
@ -181,6 +181,41 @@ assert_contains "$gate" "uninstall" "points at uninstall"
|
|||
assert_contains "$gate" "upgrade" "points at upgrade"
|
||||
assert_contains "$gate" "exit 1" "stops setup"
|
||||
|
||||
test_suite "offer_leftover_cleanup"
|
||||
# shellcheck disable=SC1091
|
||||
source "$REPO_ROOT/lib/prompts.sh"
|
||||
|
||||
media_only_home="$tmp/media-only-home"
|
||||
mkdir -p "$media_only_home/assemblrr-media/torrents/movies"
|
||||
out_media=$(HOME="$media_only_home" offer_leftover_cleanup <<< "n" 2>&1 || true)
|
||||
assert_contains "$out_media" "Media: $media_only_home/assemblrr-media" "media labeled in leftover output"
|
||||
assert_not_contains "$out_media" "Install:" "no install label when only media leftover"
|
||||
assert_true "media directory kept when answering n" "[ -d \"$media_only_home/assemblrr-media\" ]"
|
||||
|
||||
HOME="$media_only_home" offer_leftover_cleanup <<< "y" >/dev/null 2>&1 || true
|
||||
assert_false "media directory removed when answering y" "[ -d \"$media_only_home/assemblrr-media\" ]"
|
||||
|
||||
inst_only_home="$tmp/inst-only-home"
|
||||
mkdir -p "$inst_only_home/assemblrr"
|
||||
out_inst=$(HOME="$inst_only_home" offer_leftover_cleanup <<< "n" 2>&1 || true)
|
||||
assert_contains "$out_inst" "Install: $inst_only_home/assemblrr" "install labeled in leftover output"
|
||||
assert_not_contains "$out_inst" "Media:" "no media label when only install leftover"
|
||||
assert_true "install directory kept when answering n" "[ -d \"$inst_only_home/assemblrr\" ]"
|
||||
|
||||
HOME="$inst_only_home" offer_leftover_cleanup <<< "y" >/dev/null 2>&1 || true
|
||||
assert_false "install directory removed when answering y" "[ -d \"$inst_only_home/assemblrr\" ]"
|
||||
|
||||
both_home="$tmp/both-home"
|
||||
mkdir -p "$both_home/assemblrr" "$both_home/assemblrr-media/torrents/movies"
|
||||
out_both=$(HOME="$both_home" offer_leftover_cleanup <<< $'n\nn' 2>&1 || true)
|
||||
assert_contains "$out_both" "Install: $both_home/assemblrr" "both: install labeled"
|
||||
assert_contains "$out_both" "Media: $both_home/assemblrr-media" "both: media labeled"
|
||||
|
||||
# Remove install only (answer y, then n)
|
||||
HOME="$both_home" offer_leftover_cleanup <<< $'y\nn' >/dev/null 2>&1 || true
|
||||
assert_false "install directory removed on y" "[ -d \"$both_home/assemblrr\" ]"
|
||||
assert_true "media directory kept on n" "[ -d \"$both_home/assemblrr-media\" ]"
|
||||
|
||||
test_suite "print_detected_locations"
|
||||
loc=$(INSTALL_DIR=/mnt/e/assemblrr MEDIA_DIRECTORY=/mnt/e/assemblrr-media \
|
||||
HOME="$ptr_home" print_detected_locations "Detected installation:")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue