Files
topgrade/README.md

89 lines
3.5 KiB
Markdown
Raw Normal View History

2022-10-27 16:38:44 +02:00
<div align="center">
2022-11-15 08:41:35 +01:00
<h1>
<img alt="Topgrade" src="doc/topgrade_transparent.png" width="850px">
</h1>
2022-10-27 16:38:44 +02:00
2022-11-15 08:41:35 +01:00
<a href="https://github.com/topgrade-rs/topgrade/releases"><img alt="GitHub Release" src="https://img.shields.io/github/release/topgrade-rs/topgrade.svg"></a>
2022-10-27 16:38:44 +02:00
<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.
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
2022-11-16 19:39:36 +01:00
[![Packaging status](https://repology.org/badge/vertical-allrepos/topgrade.svg)](https://repology.org/project/topgrade/versions)
2022-11-15 08:41:35 +01:00
- Arch Linux: [AUR](https://aur.archlinux.org/packages/topgrade)
- NixOS: [Nixpkgs](https://search.nixos.org/packages?show=topgrade)
- Void Linux: [XBPS](https://voidlinux.org/packages/?arch=x86_64&q=topgrade)
- macOS: [Homebrew](https://formulae.brew.sh/formula/topgrade) or [MacPorts](https://ports.macports.org/port/topgrade/)
- Windows: [Scoop](https://github.com/ScoopInstaller/Main/blob/master/bucket/topgrade.json)
2018-06-10 14:42:10 +03:00
2022-11-15 08:41:35 +01:00
Other systems users can either use `cargo install` or the compiled binaries from the release page.
2022-01-23 15:44:58 +01:00
The compiled binaries contain a self-upgrading feature.
2018-09-05 11:23:04 +03:00
Topgrade requires Rust 1.60 or above.
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`.
2022-11-15 08:41:35 +01:00
Visit the documentation at [topgrade-rs.github.io](https://topgrade-rs.github.io/) for more information.
> **Warning**
> Work in Progress
## Customization
2022-10-27 16:38:44 +02:00
See `config.example.toml` for an example configuration file.
2022-11-15 08:41:35 +01:00
### Configuration Path
2022-11-15 08:41:35 +01:00
The configuration should be placed in the following paths depending on 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-11-15 08:41:35 +01:00
## 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.
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-11-15 08:41:35 +01:00
Open a new issue describing your problem and if possible provide a 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.
2022-11-15 08:41:35 +01:00
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
2022-11-02 12:17:59 +01:00
### Contribution Guidelines
- Check if your code passes `cargo fmt` and `cargo clippy`.
- Check if your code is self explanatory, if not it should be documented by comments.
2022-11-15 08:41:35 +01:00
## Roadmap
2022-10-28 16:36:05 +02:00
2022-11-03 10:35:34 +01:00
- [ ] 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.