2022-10-27 16:38:44 +02:00
|
|
|
<div align="center">
|
|
|
|
|
<img alt="Topgrade" src="doc/topgrade.png" width="850px">
|
|
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
<a href="https://github.com/topgrade-rs/topgrade/releases"><img alt="GitHub Release" src="https://img.shields.io/github/release/r-darwish/topgrade.svg"></a>
|
|
|
|
|
<a href="https://crates.io/crates/topgrade"><img alt="crates.io" src="https://img.shields.io/crates/v/topgrade.svg"></a>
|
|
|
|
|
<a href="https://aur.archlinux.org/packages/topgrade"><img alt="AUR" src="https://img.shields.io/aur/version/topgrade.svg"></a>
|
|
|
|
|
<a href="https://formulae.brew.sh/formula/topgrade"><img alt="Homebrew" src="https://img.shields.io/homebrew/v/topgrade.svg"></a>
|
|
|
|
|
-->
|
2018-05-31 16:27:23 +03:00
|
|
|
|
2022-10-27 16:38:44 +02:00
|
|
|
<img alt="Demo" src="doc/screenshot.gif" width="550px">
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
## Introduction
|
2022-10-11 16:10:52 +00:00
|
|
|
|
2022-10-27 16:38:44 +02:00
|
|
|
> **Note**
|
|
|
|
|
> This is a fork of [topgrade by r-darwish](https://github.com/r-darwish/topgrade) to keep it maintained.
|
2022-10-11 16:10:52 +00:00
|
|
|
|
2022-01-23 15:44:58 +01:00
|
|
|
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.
|
2022-10-27 16:38:44 +02:00
|
|
|
To remedy this, **topgrade** detects which tools you use and runs the appropriate commands to update them.
|
2018-05-31 16:27:23 +03:00
|
|
|
|
|
|
|
|
## Installation
|
2022-10-27 16:38:44 +02:00
|
|
|
|
|
|
|
|
- Arch Linux: [AUR](https://aur.archlinux.org/packages/topgrade) package.
|
2022-01-23 15:44:58 +01:00
|
|
|
- NixOS: _topgrade_ package in `nixpkgs`.
|
2022-10-27 16:38:44 +02:00
|
|
|
- macOS: [Homebrew](https://formulae.brew.sh/formula/topgrade) or [MacPorts](https://ports.macports.org/port/topgrade/).
|
2018-06-10 14:42:10 +03:00
|
|
|
|
2022-01-23 15:44:58 +01:00
|
|
|
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.
|
2018-09-05 11:23:04 +03:00
|
|
|
|
2021-12-06 14:14:07 +02:00
|
|
|
Topgrade requires Rust 1.51 or above.
|
2018-05-31 16:27:23 +03:00
|
|
|
|
2022-10-27 16:38:44 +02:00
|
|
|
## Documentation
|
|
|
|
|
|
|
|
|
|
> **Warning**
|
|
|
|
|
> Work in Progress
|
|
|
|
|
|
2022-10-16 19:55:08 +02:00
|
|
|
You can visit the documentation at [topgrade-rs.github.io](https://topgrade-rs.github.io/) .
|
|
|
|
|
|
2018-05-31 16:27:23 +03:00
|
|
|
## Usage
|
2022-10-27 16:38:44 +02:00
|
|
|
|
2022-01-23 15:44:58 +01:00
|
|
|
Just run `topgrade`.
|
|
|
|
|
See [the wiki](https://github.com/r-darwish/topgrade/wiki/Step-list) for the list of things Topgrade supports.
|
2018-06-11 13:57:38 +03:00
|
|
|
|
|
|
|
|
## Customization
|
2022-10-27 16:38:44 +02:00
|
|
|
|
2019-08-22 22:08:28 +03:00
|
|
|
See `config.example.toml` for an example configuration file.
|
2019-01-21 20:17:44 +02:00
|
|
|
|
|
|
|
|
### Configuration path
|
|
|
|
|
|
|
|
|
|
The configuration should be placed in the following paths depending by the operating system:
|
|
|
|
|
|
2022-10-27 16:38:44 +02:00
|
|
|
- **Windows** - `%APPDATA%/topgrade.toml`
|
|
|
|
|
- **macOS** and **other Unix systems** - `${XDG_CONFIG_HOME:-~/.config}/topgrade.toml`
|
2019-06-05 14:15:45 +03:00
|
|
|
|
2022-10-19 10:55:09 +02:00
|
|
|
## Contribution
|
2022-10-27 16:38:44 +02:00
|
|
|
|
2022-10-19 10:55:09 +02:00
|
|
|
### Problems or missing features?
|
2022-10-27 16:38:44 +02:00
|
|
|
|
2022-10-19 10:55:09 +02:00
|
|
|
Open a new Issue describing your problem and if possible with a possible solution.
|
2022-10-27 16:38:44 +02:00
|
|
|
|
2022-10-19 10:55:09 +02:00
|
|
|
### Missing a feature or found an unsupported tool/distro?
|
2022-10-27 16:38:44 +02:00
|
|
|
|
2022-10-19 10:55:09 +02:00
|
|
|
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.
|
2022-10-27 16:38:44 +02:00
|
|
|
|
2022-10-19 10:55:09 +02:00
|
|
|
### Want to contribute to the code?
|
2022-10-27 16:38:44 +02:00
|
|
|
|
2022-10-22 09:27:27 +00:00
|
|
|
Just fork the repository and start coding.
|
2022-10-19 10:55:09 +02:00
|
|
|
|
2019-06-05 14:15:45 +03:00
|
|
|
## Remote execution
|
2022-10-27 16:38:44 +02:00
|
|
|
|
2022-01-23 15:44:58 +01:00
|
|
|
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.
|
2022-10-28 16:36:05 +02:00
|
|
|
|
|
|
|
|
## ToDo
|
|
|
|
|
|
|
|
|
|
- Add a proper testing framework to the code base.
|
|
|
|
|
- Add unit tests for package managers.
|
|
|
|
|
- Split up code into more maintainable parts, eg. putting every linux package manager in a own submodule of linux.rs.
|