topgrade 0.5.0

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

Topgrade Travis

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 invoke 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 invoke topgrade. It will invoke the following steps:

  • Invoke the system package manager:
    • Arch: Invoke yay or fall back to pacman
    • CentOS/RHEL: Invoke yum upgrade
    • Fedora - Invoke dnf upgrade
    • Debian/Ubuntu: Invoke apt update && apt dist-upgrade
    • macOS: Invoke brew update && brew upgrade
  • 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.fish
    • Custom defined paths
  • Unix: Invoke zplug update
  • Unix: Upgrade tmux plugins with TPM
  • Invoke Cargo install-update
  • Upgrade Emacs packages
  • Upgrade Vim packages. Works with the following plugin frameworks:
  • Upgrade NPM globally installed packages
  • Upgrade Atom packages
  • Linux: Invoke fwupdmgr to show firmware upgrade. (View only. No upgrades will actually be performed)
  • Run custom defined commands
  • Final stage
    • Linux: Run needrestart
    • macOS: Upgrade App Store applications

Customization

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

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

[commands]
"Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"