Topgrade is a cross-platform command-line tool designed to simplify system updates by automating the process of upgrading software packages across multiple package managers. It detects which tools you use and runs the appropriate commands to update them, eliminating the need for cumbersome shell scripts or manual invocations.
Key Features:
Cross-Platform Support: Works seamlessly on Linux, macOS, Windows, and other Unix-like systems.
Package Manager Detection: Automatically identifies installed package managers (e.g., apt, pacman, Homebrew, pip) and applies updates using their respective commands.
Custom Commands: Allows users to define pre, post, or mid-update commands in a configuration file for tailored workflows.
Remote Execution: Supports running Topgrade on remote hosts via SSH before executing local updates, streamlining system-wide maintenance.
Configuration Flexibility: Offers a customizable config file with platform-specific paths and options for advanced users.
Audience & Benefit:
Ideal for developers, system administrators, and general users who want to keep their systems up-to-date without manually managing multiple package managers. Topgrade consolidates the update process into a single command, saving time and reducing errors associated with manual updates.
Available via winget on Windows, Topgrade provides a consistent and efficient way to maintain software across different platforms.
Keeping your system up to date usually involves invoking multiple package managers.
This results in big, non-portable shell one-liners saved in your shell.
To remedy this, Topgrade detects which tools you use and runs the appropriate commands to update them.
See config.example.toml for an example configuration file.
Migration and Breaking Changes
Whenever there is a breaking change, the major version number will be bumped,
and we will document these changes in the release note, please take a look at
it when updated to a major release.
> Got a question? Feel free to open an issue or discussion!
Configuration Path
CONFIG_DIR on each platform
Windows: %APPDATA%
macOS and other Unix systems: ${XDG_CONFIG_HOME:-~/.config}
topgrade will look for the configuration file in the following places, in order of priority:
CONFIG_DIR/topgrade.toml
CONFIG_DIR/topgrade/topgrade.toml
If the file with higher priority is present, no matter it is valid or not, the other configuration files will be
ignored.
On the first run(no configuration file exists), topgrade will create a configuration file at
CONFIG_DIR/topgrade.toml for you.
Custom Commands
Custom commands can be defined in the config file which can be run before, during, or after the inbuilt commands, as
required.
By default, the custom commands are run using a new shell according to the $SHELL environment variable on unix (falls
back to sh) or pwsh on windows (falls back to powershell).
On unix, if you want to run your command using an interactive shell, for example to source your shell's rc files, you
can add -i at the start of your custom command.
But note that this requires the command to exit the shell correctly or else the shell will hang indefinitely.
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 use ssh to run topgrade on remote hosts before acting locally.
To limit the execution only to specific hosts use the --remote-host-limit parameter.
Contribution
Problems or missing features?
Open a new issue describing your problem and if possible provide a solution.
Missing a feature or found an unsupported tool/distro?
Just let us now what you are missing by opening an issue.
For tools, please open an issue describing the tool, which platforms it supports and if possible, give us an example of
its usage.