Topgrade

Travis AppVeyor GitHub release Crates.io AUR homebrew

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.

Supported Platforms

Topgrade should probably work on whichever platform it can be build. The real question is whether Topgrade knows that platform and can utilize its unique features, such as the operating system's package manager. Topgrade is tested on and knows the following platforms:

Installation

Arch Linux users can use the AUR package.

macOS users can install topgrade via Homebrew.

Other systems users can either use cargo install or use the compiled binaries from the release page. The compiled binaries contain a self-upgrading feature.

Topgrade isn't guaranteed to work on Rust versions older than the latest stable release. If you intend to install Topgrade using Cargo then you should either install Rust using rustup or use a distribution which ships the latest version of Rust, such as Arch Linux.

Usage

Just run topgrade. It will run the following steps:

Flags

Customization

Here's an example for a configuration file:

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

Same options as the command line flag

disable = ["system", "emacs"]

[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" `` *gitrepos- A list of custom Git repositories to pull *precommands- 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.

Configuration path

The configuration should be placed in the following paths depending by the operating system: