Skip to content

Commit 1ceffb7

Browse files
committed
fix: show multi-install warnings for all guide.sh code paths
Previously, multiple-installation warnings only appeared in the interactive prompt path. Up-to-date and auto-update paths silently skipped the check. Extract check_multi_installs() helper and call it from all three code paths. Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
1 parent 3681b32 commit 1ceffb7

1 file changed

Lines changed: 24 additions & 14 deletions

File tree

scripts/guide.sh

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,27 @@ osc8() {
139139
[ -n "$url" ] && printf '\e]8;;%s\e\\%s\e]8;;\e\\' "$url" "$text" || printf '%s' "$text"
140140
}
141141

142+
# Check for multiple installations and print warning if found
143+
# Args: catalog_tool_name
144+
# Returns: 0 always (informational only)
145+
check_multi_installs() {
146+
local catalog_tool="$1"
147+
local binary_name
148+
binary_name="$(catalog_get_property "$catalog_tool" binary_name)"
149+
binary_name="${binary_name:-$catalog_tool}"
150+
local all_installs
151+
all_installs="$(detect_all_installations "$catalog_tool" "$binary_name" 2>/dev/null || true)"
152+
local install_count
153+
install_count="$(echo "$all_installs" | grep -c . || true)"
154+
if [ "$install_count" -gt 1 ]; then
155+
printf " ⚠️ Multiple installations detected (%d):\n" "$install_count"
156+
echo "$all_installs" | while IFS=: read -r inst_method inst_path; do
157+
printf " • %s: %s\n" "$inst_method" "$inst_path"
158+
done
159+
fi
160+
return 0
161+
}
162+
142163
# Generic tool processing function - reads ALL metadata from catalog
143164
process_tool() {
144165
local tool="$1"
@@ -219,6 +240,7 @@ process_tool() {
219240
printf "\n==> %s %s\n" "$icon" "$display"
220241
printf " installed: %s via %s\n" "$installed" "$method"
221242
printf " target: %s (same)\n" "$(osc8 "$url" "$latest")"
243+
check_multi_installs "$catalog_tool"
222244
printf " up-to-date; skipping.\n"
223245
return 0
224246
fi
@@ -244,6 +266,7 @@ process_tool() {
244266
printf "\n==> %s %s [auto-update]\n" "$icon" "$display"
245267
printf " installed: %s via %s\n" "${installed:-<none>}" "${method:-unknown}"
246268
printf " target: %s\n" "$(osc8 "$url" "${latest:-<unknown>}")"
269+
check_multi_installs "$catalog_tool"
247270
printf " auto-updating...\n"
248271

249272
# Build install command from catalog metadata (use catalog_tool for script name)
@@ -281,20 +304,7 @@ process_tool() {
281304
[ -n "$homepage" ] && printf " Homepage: %s\n" "$(osc8 "$homepage" "$homepage")"
282305
printf " installed: %s via %s\n" "${installed:-<none>}" "${method:-unknown}"
283306

284-
# Check for multiple installations and warn
285-
local binary_name
286-
binary_name="$(catalog_get_property "$catalog_tool" binary_name)"
287-
binary_name="${binary_name:-$catalog_tool}"
288-
local all_installs
289-
all_installs="$(detect_all_installations "$catalog_tool" "$binary_name" 2>/dev/null || true)"
290-
local install_count
291-
install_count="$(echo "$all_installs" | grep -c . || true)"
292-
if [ "$install_count" -gt 1 ]; then
293-
printf " ⚠️ Multiple installations detected (%d):\n" "$install_count"
294-
echo "$all_installs" | while IFS=: read -r inst_method inst_path; do
295-
printf " • %s: %s\n" "$inst_method" "$inst_path"
296-
done
297-
fi
307+
check_multi_installs "$catalog_tool"
298308

299309
printf " target: %s\n" "$(osc8 "$url" "${latest:-<unknown>}")"
300310

0 commit comments

Comments
 (0)