* Drop the Go step With the release of Go 1.16 the behavior of `go get` has been changed. In previous Go versions `go get` was used not only to add module dependencies but also to install Go tools. As of Go 1.16 `go get` can only add and upgrade module dependencies. To install Go tools now the `go install` command has to be used. Further on Go 1.16 enabled the GOMODULE mode by default and will drop the GOPATH mode completly in Go 1.17. So the package definition `all` like in `go get -u all` does not work anymore if the PWD is outside of a Go module project. Because of this `go list all` also does not work for the same reason. That being said it seems that currently there is no way to get a list of all installed Go tools or packages at the GOPATH level. So the only possible solution to determine the installed Go tools and also to update them would be by inspecting the `go env GOBIN` directory as well as the `go env GOMODCACHE` sub-directories and to filter the results according to their possible name-to-package boundaries. As this approach seems to be very ugly and also not to be very safe or stable and Go currently does not support any kind of automated upgrades of installed Go tools it is best to drop the Go step for now until Go implements some kind of Go tool upgrade feature. Fixes #659 * Remove Go from Step enum
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.
On NixOS, use the topgrade package in nixpkgs.
macOS users can install topgrade via Homebrew or MacPorts.
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. See the wiki for the list of things Topgrade supports
Customization
See config.example.toml for an example configuration file.
Configuration path
The configuration should be placed in the following paths depending by the operating system:
- macOS -
~/.config/topgrade.toml - Windows -
%APPDATA%/topgrade.toml - Other Unix systems -
~/.config/topgrade.toml
Remote execution
You can specify a key called remote_topgrades in the configuration file. This key should contain a
list of hostnames that have topgrade installed on them. Topgrade will execute Topgrades on these
remote hosts. To limit the execution only to specific hosts use the --remote-host-limit parameter.

