@@ -134,19 +134,63 @@ stage_2_managers() {
134134 log_skip " brew (not installed)"
135135 fi
136136
137+ if command -v snap > /dev/null 2>&1 ; then
138+ run_cmd " snap" sudo snap refresh || log_skip " snap (failed)"
139+ else
140+ log_skip " snap (not installed)"
141+ fi
142+
143+ if command -v flatpak > /dev/null 2>&1 ; then
144+ run_cmd " flatpak" flatpak update -y || log_skip " flatpak (failed)"
145+ else
146+ log_skip " flatpak (not installed)"
147+ fi
148+
137149 # Language-specific package managers
138150 if command -v pip3 > /dev/null 2>&1 ; then
139151 run_cmd " pip" python3 -m pip install --user --upgrade pip || log_skip " pip (failed)"
140152 else
141153 log_skip " pip (not installed)"
142154 fi
143155
156+ if command -v uv > /dev/null 2>&1 ; then
157+ run_cmd " uv" uv self update || log_skip " uv (failed)"
158+ else
159+ log_skip " uv (not installed)"
160+ fi
161+
162+ if command -v pipx > /dev/null 2>&1 ; then
163+ run_cmd " pipx" pip3 install --user --upgrade pipx || log_skip " pipx (failed)"
164+ else
165+ log_skip " pipx (not installed)"
166+ fi
167+
144168 if command -v npm > /dev/null 2>&1 ; then
145169 run_cmd " npm" npm install -g npm@latest || log_skip " npm (failed)"
146170 else
147171 log_skip " npm (not installed)"
148172 fi
149173
174+ if command -v pnpm > /dev/null 2>&1 ; then
175+ if command -v corepack > /dev/null 2>&1 ; then
176+ run_cmd " pnpm" corepack prepare pnpm@latest --activate || log_skip " pnpm (failed)"
177+ else
178+ run_cmd " pnpm" npm install -g pnpm@latest || log_skip " pnpm (failed)"
179+ fi
180+ else
181+ log_skip " pnpm (not installed)"
182+ fi
183+
184+ if command -v yarn > /dev/null 2>&1 ; then
185+ if command -v corepack > /dev/null 2>&1 ; then
186+ run_cmd " yarn" corepack prepare yarn@stable --activate || log_skip " yarn (failed)"
187+ else
188+ run_cmd " yarn" npm install -g yarn@latest || log_skip " yarn (failed)"
189+ fi
190+ else
191+ log_skip " yarn (not installed)"
192+ fi
193+
150194 if command -v cargo > /dev/null 2>&1 && command -v rustup > /dev/null 2>&1 ; then
151195 run_cmd " rustup" rustup update || log_skip " rustup (failed)"
152196 else
@@ -158,6 +202,29 @@ stage_2_managers() {
158202 else
159203 log_skip " gem (not installed)"
160204 fi
205+
206+ if command -v composer > /dev/null 2>&1 ; then
207+ run_cmd " composer" composer self-update || log_skip " composer (failed)"
208+ else
209+ log_skip " composer (not installed)"
210+ fi
211+
212+ if command -v poetry > /dev/null 2>&1 ; then
213+ # Try poetry self update first (Poetry 1.2+)
214+ if poetry self update --help > /dev/null 2>&1 ; then
215+ run_cmd " poetry" poetry self update || log_skip " poetry (failed)"
216+ # Fallback to uv tool upgrade if poetry is managed by uv
217+ elif command -v uv > /dev/null 2>&1 && uv tool list 2> /dev/null | grep -q " ^poetry" ; then
218+ run_cmd " poetry" uv tool upgrade poetry || log_skip " poetry (failed)"
219+ # Fallback to pipx upgrade if poetry is managed by pipx
220+ elif command -v pipx > /dev/null 2>&1 && pipx list 2> /dev/null | grep -q " poetry" ; then
221+ run_cmd " poetry" pipx upgrade poetry || log_skip " poetry (failed)"
222+ else
223+ log_skip " poetry (no automatic update method)"
224+ fi
225+ else
226+ log_skip " poetry (not installed)"
227+ fi
161228}
162229
163230# ============================================================================
@@ -205,61 +272,69 @@ stage_3_runtimes() {
205272}
206273
207274# ============================================================================
208- # Stage 4: Upgrade User Package Managers
275+ # Stage 4: Upgrade Packages Managed by Package Managers
209276# ============================================================================
210- stage_4_user_managers () {
211- log_stage 4 5 " Upgrading user package managers..."
277+ stage_4_user_packages () {
278+ log_stage 4 5 " Upgrading packages managed by package managers..."
212279
213280 cd " $PROJECT_ROOT "
214281
215- # UV
282+ # UV tools
216283 if command -v uv > /dev/null 2>&1 ; then
217- run_cmd " uv" uv self update || log_skip " uv (upgrade failed)"
284+ log_info " Upgrading uv tools..."
285+ if [ " $DRY_RUN " = " 0" ]; then
286+ local tools
287+ tools=" $( uv tool list 2> /dev/null | awk ' {print $1}' || true) "
288+ if [ -n " $tools " ]; then
289+ local count=$( echo " $tools " | wc -l)
290+ log_info " Found $count uv tools to upgrade"
291+ while IFS= read -r tool; do
292+ [ -z " $tool " ] && continue
293+ run_cmd " uv tool: $tool " uv tool upgrade " $tool " || log_skip " uv tool: $tool (failed)"
294+ done <<< " $tools"
295+ else
296+ log_skip " uv (no tools installed)"
297+ fi
298+ else
299+ log_info " DRY-RUN: uv tool upgrade <all-tools>"
300+ fi
218301 else
219302 log_skip " uv (not installed)"
220303 fi
221304
222- # Pipx
305+ # Pipx packages
223306 if command -v pipx > /dev/null 2>&1 ; then
224- run_cmd " pipx" pip3 install --user --upgrade pipx || log_skip " pipx (upgrade failed)"
307+ run_cmd " pipx packages " pipx upgrade-all || log_skip " pipx packages ( failed)"
225308 else
226309 log_skip " pipx (not installed)"
227310 fi
228311
229- # Pnpm
230- if command -v pnpm > /dev/null 2>&1 ; then
231- if command -v corepack > /dev/null 2>&1 ; then
232- run_cmd " pnpm" corepack prepare pnpm@latest --activate || log_skip " pnpm (upgrade failed)"
233- else
234- run_cmd " pnpm" npm install -g pnpm@latest || log_skip " pnpm (upgrade failed)"
235- fi
236- else
237- log_skip " pnpm (not installed)"
238- fi
239-
240- # Yarn
241- if command -v yarn > /dev/null 2>&1 ; then
242- if command -v corepack > /dev/null 2>&1 ; then
243- run_cmd " yarn" corepack prepare yarn@stable --activate || log_skip " yarn (upgrade failed)"
244- else
245- run_cmd " yarn" npm install -g yarn@latest || log_skip " yarn (upgrade failed)"
246- fi
247- else
248- log_skip " yarn (not installed)"
249- fi
250-
251312 # Cargo install-update
252313 if command -v cargo > /dev/null 2>&1 ; then
253314 if ! command -v cargo-install-update > /dev/null 2>&1 ; then
254315 run_cmd " cargo-update tool" cargo install cargo-update || log_skip " cargo-update (install failed)"
255316 fi
256317
257318 if command -v cargo-install-update > /dev/null 2>&1 ; then
258- run_cmd " cargo packages" cargo install-update -a || log_skip " cargo packages (upgrade failed)"
319+ run_cmd " cargo packages" cargo install-update -a || log_skip " cargo packages (failed)"
259320 fi
260321 else
261322 log_skip " cargo (not installed)"
262323 fi
324+
325+ # Gem packages
326+ if command -v gem > /dev/null 2>&1 ; then
327+ run_cmd " gem packages" gem update || log_skip " gem packages (failed)"
328+ else
329+ log_skip " gem (not installed)"
330+ fi
331+
332+ # Composer global packages
333+ if command -v composer > /dev/null 2>&1 ; then
334+ run_cmd " composer packages" composer global update || log_skip " composer packages (failed)"
335+ else
336+ log_skip " composer (not installed)"
337+ fi
263338}
264339
265340# ============================================================================
@@ -312,7 +387,7 @@ main() {
312387 stage_1_refresh || true
313388 stage_2_managers || true
314389 stage_3_runtimes || true
315- stage_4_user_managers || true
390+ stage_4_user_packages || true
316391 stage_5_tools || true
317392
318393 # Summary
0 commit comments