Add bun, deno & uv self-updaters to vo update#2
Conversation
Extends the update-everything command with three curl-installed dev CLIs that self-update outside any package manager: - bun -> bun upgrade - deno -> deno upgrade - uv -> uv self update (tolerant) + uv tool upgrade --all Each is gated on presence (command -v), needs no sudo, and reports an "unknown" pending count like pipx — so it's always offered in an update-all run, where self-update is a no-op when already current. Docs and the manager help/coverage lists updated to match. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 66f5534f3c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| cargo) command -v cargo-install-update > /dev/null 2>&1 ;; | ||
| gem) command -v gem > /dev/null 2>&1 ;; | ||
| fwupd) command -v fwupdmgr > /dev/null 2>&1 ;; | ||
| bun) command -v bun > /dev/null 2>&1 ;; |
There was a problem hiding this comment.
Detect only standalone Bun installs
When Bun is installed via Homebrew, command -v bun is still true, so vo update all will include both the Homebrew manager and this Bun manager; after brew upgrade runs, line 210 still invokes bun upgrade. Bun's official upgrade docs say package-manager installs should be upgraded with the package manager instead of bun upgrade to avoid conflicts (https://bun.com/docs/guides/util/upgrade#package-manager-users), so this can break or conflict with common brew-managed Bun setups. Please gate this manager on a standalone Bun install or skip it when Homebrew owns the binary.
Useful? React with 👍 / 👎.
| local key="$1" list_file="$2" count="" | ||
| case "$key" in | ||
| pipx) | ||
| pipx | bun | deno | uv) |
There was a problem hiding this comment.
Count unknown self-updaters in dry runs
For vo update dry run bun (same for deno/uv), this branch records ?, but TOTAL_PENDING only increments numeric counts and the dry-run gate exits as “Everything is up to date” when the total is 0. I reproduced this with a stubbed bun: it printed “unknown — will attempt” and then exited before the apply prompt, so these newly detected managers cannot be applied from the advertised dry-run flow unless another numeric manager is pending. Please count unknown managers separately or allow dry-run to continue when any ? is present.
Useful? React with 👍 / 👎.
| uv) | ||
| # Update uv itself (only meaningful for the standalone installer — tolerate | ||
| # the "managed by a package manager" case), then upgrade uv-installed tools. | ||
| run_step "Updating uv & tools" "$log" sh -c 'uv self update 2>/dev/null || true; uv tool upgrade --all' |
There was a problem hiding this comment.
Do not mask uv self-update failures
In the uv path, uv self update is the only command that updates the uv executable (checked uv self --help: update is “Update uv”), but || true makes every self-update failure look successful as long as uv tool upgrade --all exits 0. For standalone uv installs with a network or permission failure, vo update uv will print success and log history even though uv itself stayed old; only tolerate the known package-manager-managed case or propagate other self-update failures.
Useful? React with 👍 / 👎.
Extends
vo update(the update-everything command) with three curl-installed dev CLIs that self-update outside any package manager.What
bun upgradedeno upgradeuv self update(tolerant of pkg-manager-managed installs) +uv tool upgrade --allHow it fits the existing pattern
command -v), so absent tools never appear.pipx(these have no cheap "what's pending" query), so they're always offered in anupdate allrun — self-update is a no-op when already current.ALL_KEYS,manager_detected/label/scan/run, plus the help text and README coverage table.Testing
bash -nclean.bun/deno/uvon PATH: all three detect, scan as "unknown — will attempt", and run their upgrade commands (✓).🤖 Generated with Claude Code