Log each install and update, and keep only the recent logs
shellcheck / shellcheck (push) Failing after 17s

Each run's output now goes to ~/.local/state/coredesktop/logs/, so what
failed can be read after the terminal is gone. In a terminal, update runs
itself under script(1), so everything it runs still sees a terminal, then
strips color codes and progress redraws from the log; otherwise it uses
tee. install.sh, usually piped into bash, uses tee, and runs configure
straight on the terminal, outside the log. Both name the log when
something fails. 95-cleanup.sh keeps the newest 10 update logs and 3
install logs.

The sudo keepalive loops no longer share the logged output, so their
sleep can't hold the log open after the run ends.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-08 11:00:31 -07:00
co-authored by Claude Opus 5.5
parent c8b2f8473d
commit 54f9e12526
6 changed files with 130 additions and 5 deletions
+32
View File
@@ -31,3 +31,35 @@ esac'
[ "$status" -eq 0 ]
[ -z "$(grep 'pacman -R ' "$STUB_LOG")" ]
}
@test "95-cleanup keeps the newest 10 update logs and 3 install logs" {
stub pacman
stub sudo
stub flatpak
logs="$HOME/.local/state/coredesktop/logs"
mkdir -p "$logs"
for day in 01 02 03 04 05 06 07 08 09 10 11 12; do
touch "$logs/update-2026-11-$day-120000.log" "$logs/install-2026-11-$day-120000.log"
done
touch "$logs/notes.txt"
run bash "$REPO/updates.d/95-cleanup.sh" < /dev/null
[ "$status" -eq 0 ]
[ "$(cd "$logs" && echo update-*)" = "$(printf 'update-2026-11-%s-120000.log ' 03 04 05 06 07 08 09 10 11 12 | sed 's/ $//')" ]
[ "$(cd "$logs" && echo install-*)" = "install-2026-11-10-120000.log install-2026-11-11-120000.log install-2026-11-12-120000.log" ]
[ -f "$logs/notes.txt" ]
}
@test "95-cleanup is fine with no logs or only a few" {
stub pacman
stub sudo
stub flatpak
run bash "$REPO/updates.d/95-cleanup.sh" < /dev/null
[ "$status" -eq 0 ]
mkdir -p "$HOME/.local/state/coredesktop/logs"
touch "$HOME/.local/state/coredesktop/logs/update-2026-11-01-120000.log"
run bash "$REPO/updates.d/95-cleanup.sh" < /dev/null
[ "$status" -eq 0 ]
[ -f "$HOME/.local/state/coredesktop/logs/update-2026-11-01-120000.log" ]
}