Skip to main content

A cross-platform TUI that upgrades every package manager on your system

Project description

pkg-upgrade

A beautiful keyboard-only terminal UI that upgrades every macOS package manager you have installed — Homebrew formulas & casks, pip, npm, gem, and macOS system updates — with smart parallel execution, per-manager confirmations, and a detailed dashboard.

Features

  • 🍺 Homebrew formulas + 🍻 casks
  • 🐍 pip3
  • 📦 npm (global)
  • 💎 gem
  • 🍎 softwareupdate
  • Smart parallel execution (brew → cask → pip sequential; npm/gem/system parallel)
  • Per-manager confirmation with preview, or --yes to skip prompts
  • Timestamped log file + native macOS notification on completion
  • --skip / --only / --dry-run / --list

Keybindings

Key Action
j / k or / Move up/down
g / G Jump to top/bottom
Enter / Expand/confirm
y Confirm upgrade
s Skip package
/ Filter/search
q Quit
? Show help

Installation

One-line (recommended)

curl -fsSL https://raw.githubusercontent.com/liskeee/pkg-upgrade/main/install.sh | bash

Pin a specific version:

curl -fsSL https://raw.githubusercontent.com/liskeee/pkg-upgrade/main/install.sh \
    | MAC_UPGRADE_REF=v0.1.0 bash

The installer uses pipx when available and falls back to a self-managed venv at ~/.local/share/pkg-upgrade/. Requires Python 3.12+ and macOS.

Homebrew

brew tap liskeee/pkg-upgrade https://github.com/liskeee/pkg-upgrade
brew install pkg-upgrade

pipx

pipx install git+https://github.com/liskeee/pkg-upgrade

From source

git clone https://github.com/liskeee/pkg-upgrade
cd pkg-upgrade
pipx install .

Windows

iwr -useb https://raw.githubusercontent.com/liskeee/pkg-upgrade/main/install.ps1 | iex

Or via Scoop:

scoop bucket add liskeee https://github.com/liskeee/scoop-bucket
scoop install pkg-upgrade

Uninstall

# installed via pipx (the default path):
pipx uninstall pkg-upgrade

# installed via the venv fallback:
rm -rf ~/.local/share/pkg-upgrade ~/.local/bin/pkg-upgrade

Usage

pkg-upgrade                      # interactive dashboard
pkg-upgrade --yes                # upgrade everything without prompts
pkg-upgrade --only brew,npm      # only specific managers
pkg-upgrade --skip system        # skip macOS system updates
pkg-upgrade --dry-run            # preview only
pkg-upgrade --list               # detect installed managers and exit

Shell Completion

Tab completion is installed automatically by every first-party installer (Homebrew, Scoop, install.sh, install.ps1). If you installed via pipx or pip, set it up manually:

# bash
pkg-upgrade completion bash  | sudo tee /etc/bash_completion.d/pkg-upgrade

# zsh (ensure ~/.zsh/completions is on your fpath)
pkg-upgrade completion zsh   > "$HOME/.zsh/completions/_pkg-upgrade"

# fish
pkg-upgrade completion fish  > ~/.config/fish/completions/pkg-upgrade.fish

# PowerShell (add to $PROFILE)
pkg-upgrade completion powershell | Out-String | Invoke-Expression

Third-party plugin managers appear in Tab completion after the next pkg-upgrade --list call, which refreshes the cached manager list.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pkg_upgrade-1.4.0.tar.gz (147.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pkg_upgrade-1.4.0-py3-none-any.whl (44.8 kB view details)

Uploaded Python 3

File details

Details for the file pkg_upgrade-1.4.0.tar.gz.

File metadata

  • Download URL: pkg_upgrade-1.4.0.tar.gz
  • Upload date:
  • Size: 147.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pkg_upgrade-1.4.0.tar.gz
Algorithm Hash digest
SHA256 66ef5fa08e7165fc1b9c76ff0927768b7d3fb96241c0ec6198aa82f09054e26a
MD5 99689130733188e57812ac2227d6f7dd
BLAKE2b-256 da6881db7381045b4a235fc79ee81e446a41d1e735e26fc8c5590e9c8d52c98d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pkg_upgrade-1.4.0.tar.gz:

Publisher: release.yml on liskeee/pkg-upgrade

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pkg_upgrade-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: pkg_upgrade-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 44.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pkg_upgrade-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3bb90556789da280bbe52e7f67759c1ffe1e72a3e93b4e603b855b07b2c0fe1b
MD5 1aebbfcb26b35c8f617c6e8128ef5cb6
BLAKE2b-256 be6195847c55009e9664d355221c610c5d0f1e3d10b9afa01dde51749b1706ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for pkg_upgrade-1.4.0-py3-none-any.whl:

Publisher: release.yml on liskeee/pkg-upgrade

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page