report what a section actually installed, not what it was asked for
The summary claimed credit for everything in a section's list, including the packages it had just decided to leave alone — so a run that installed nothing still ended with "Command-line tools: lazydocker lazygit starship fastfetch". The announce above it said "nothing, all present" in the same breath. pkg_install and tools_install now record LAST_INSTALLED and LAST_KEPT, and summarise_last turns those into one honest line: Core packages installed: btop tmux (17 already present) Command-line tools: already present, nothing installed Verified all three shapes — everything present, nothing present, and mixed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -29,6 +29,13 @@
|
||||
[[ -n "${MACHINE_SETUP_PACKAGES_LOADED:-}" ]] && return 0
|
||||
MACHINE_SETUP_PACKAGES_LOADED=1
|
||||
|
||||
# What the last pkg_install/tools_install actually put on the machine, as opposed
|
||||
# to what it was asked for. Read by the caller to write an honest summary line:
|
||||
# without it every section reports its whole list as installed, including the
|
||||
# packages it deliberately left alone.
|
||||
LAST_INSTALLED=()
|
||||
LAST_KEPT=()
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# The sections
|
||||
# -----------------------------------------------------------------------------
|
||||
@@ -152,6 +159,9 @@ pkg_install() {
|
||||
if pkg_is_installed "$pkg"; then present+=("$pkg"); else missing+=("$pkg"); fi
|
||||
done
|
||||
|
||||
LAST_INSTALLED=("${missing[@]}")
|
||||
LAST_KEPT=("${present[@]}")
|
||||
|
||||
info "$label — installs what is missing, keeps what you already have"
|
||||
((${#present[@]})) && echo " already here: ${present[*]}"
|
||||
|
||||
@@ -163,3 +173,16 @@ pkg_install() {
|
||||
echo " to install: ${missing[*]}"
|
||||
pkg_install_now "${missing[@]}"
|
||||
}
|
||||
|
||||
# One summary line describing what a section actually did, from LAST_INSTALLED
|
||||
# and LAST_KEPT. Call straight after pkg_install or tools_install.
|
||||
summarise_last() {
|
||||
local label="$1"
|
||||
if ((${#LAST_INSTALLED[@]} == 0)); then
|
||||
SUMMARY+=("$label: already present, nothing installed")
|
||||
elif ((${#LAST_KEPT[@]} == 0)); then
|
||||
SUMMARY+=("$label installed: ${LAST_INSTALLED[*]}")
|
||||
else
|
||||
SUMMARY+=("$label installed: ${LAST_INSTALLED[*]} (${#LAST_KEPT[@]} already present)")
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user