topgrade 0.12.0

Upgrade all the things
topgrade-0.12.0 is not a library.
Visit the last successful build: topgrade-14.0.1

Topgrade

Travis AppVeyor Crates.io AUR

Alt Text

Keeping your system up to date mostly involves invoking more than a single package manager. This usually results in big shell one-liners saved in your shell history. Topgrade tries to solve this problem by detecting which tools you use and run their appropriate package managers.

Installation

Arch Linux users can use the AUR package.

Other systems users can either use cargo install or use the compiled binaries from the release page.

Usage

Just run topgrade. It will run the following steps:

  • Run the system package manager:
    • Arch: Run yay or fall back to pacman
    • CentOS/RHEL: Run yum upgrade
    • Fedora - Run dnf upgrade
    • Debian/Ubuntu: Run apt update && apt dist-upgrade
  • Unix: Run brew update && brew upgrade. This should handle both Homebrew and Linuxbrew
  • Windows: Upgrade Powershell modules
  • Windows: Upgrade all Chocolatey packages
  • Check if the following paths are tracked by Git. If so, pull them:
    • ~/.emacs.d (Should work whether you use Spacemacs or a custom configuration)
    • ~/.zshrc
    • ~/.oh-my-zsh
    • ~/.tmux
    • ~/.config/fish
    • ~/.config/nvim
    • ~/.vim
    • Custom defined paths
  • Unix: Run zplug update
  • Unix: Run fisherman update
  • Unix: Upgrade tmux plugins with TPM
  • Update Rustup by running rustup update. This will also attempt to run rustup self update when Rustup is installed inside the home directory.
  • Run Cargo install-update
  • Upgrade Emacs packages
  • Upgrade Vim/Neovim packages. Works with the following plugin frameworks:
  • Upgrade NPM globally installed packages
  • Upgrade Atom packages
  • Linux: Update Flatpak packages
  • Linux: Update snap packages
  • Linux: Run fwupdmgr to show firmware upgrade. (View only. No upgrades will actually be performed)
  • Run custom defined commands
  • Final stage
    • Linux: Run needrestart
    • Windows: Run Windows Update (You'll have to install PSWindowsUpdate)
    • macOS: Upgrade App Store applications

Flags

  • -t/--tmux - Topgrade will launch itself in a new tmux session. This flag has no effect if Topgrade already runs inside tmux. This is useful when using topgrade on remote systems.

Customization

You can place a configuration file at ~/.config/topgrade.toml. Here's an example:

git_repos = [
    "~/dev/topgrade",
]

[pre_commands]
"Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"

[commands]
"Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"
  • git_repos - A list of custom Git repositories to pull
  • pre_commands - Commands to execute before starting any action. If any command fails, Topgrade will not proceed
  • commands - Custom upgrade steps. If any command fails it will be reported in the summary as all upgrade steps are reported, but it will not cause Topgrade to stop.