@@ -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
143164process_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