Files
topgrade/README.md

102 lines
4.4 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>
2023-04-30 18:58:22 +00:00
## Maintainers Wanted
2023-04-30 18:57:23 +00:00
2023-04-30 18:57:07 +00:00
I currently have not enough time to maintain this project on the level required and which the project deserves. For this reason I'm asking the community to help supporting the project, to help and work on resolving issues and create new features. Thanks for all your help.
2022-10-27 16:38:44 +02:00
## 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
## Configuration
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
### 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.
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.