<div align="center">
<h1>
<img alt="Topgrade" src="doc/topgrade_transparent.png" width="850px">
</h1>
<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>
<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>
<img alt="Demo" src="doc/topgrade_demo.gif">
</div>
## Introduction
> **Note**
> This is a fork of [topgrade by r-darwish](https://github.com/r-darwish/topgrade) to keep it maintained.
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.
## Installation
[![Packaging status](https://repology.org/badge/vertical-allrepos/topgrade.svg)](https://repology.org/project/topgrade/versions)
- 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: [Chocolatey][choco], [Scoop][scoop] or [Winget][winget]
- PyPi: [pip](https://pypi.org/project/topgrade/)
[choco]: https://community.chocolatey.org/packages/topgrade
[scoop]: https://scoop.sh/#/apps?q=topgrade
[winget]: https://winstall.app/apps/topgrade-rs.topgrade
Other systems users can either use `cargo install` or the compiled binaries from the release page.
The compiled binaries contain a self-upgrading feature.
## Usage
Just run `topgrade`.
## Configuration
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:
1. `CONFIG_DIR/topgrade.toml`
2. `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.
### Want to contribute to the code?
Just fork the repository and start coding.
### Contribution Guidelines
See [CONTRIBUTING.md](https://github.com/topgrade-rs/topgrade/blob/master/CONTRIBUTING.md)
## Roadmap
- [ ] 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.
Raw data
{
"_id": null,
"home_page": null,
"name": "topgrade",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "upgrade, update",
"author": "Roey Darwish Dror <roey.ghost@gmail.com>, Thomas Sch\u00f6nauer <t.schoenauer@hgs-wt.at>",
"author_email": "Roey Darwish Dror <roey.ghost@gmail.com>, Thomas Sch\u00f6nauer <t.schoenauer@hgs-wt.at>",
"download_url": "https://files.pythonhosted.org/packages/68/56/afb28adedad3f7afc147d807c581c8aa10a18ad0c19d574ada0dd84aa12c/topgrade-16.0.2.tar.gz",
"platform": null,
"description": "<div align=\"center\">\n <h1>\n <img alt=\"Topgrade\" src=\"doc/topgrade_transparent.png\" width=\"850px\">\n </h1>\n \n <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>\n <a href=\"https://crates.io/crates/topgrade\"><img alt=\"crates.io\" src=\"https://img.shields.io/crates/v/topgrade.svg\"></a>\n <a href=\"https://aur.archlinux.org/packages/topgrade\"><img alt=\"AUR\" src=\"https://img.shields.io/aur/version/topgrade.svg\"></a>\n <a href=\"https://formulae.brew.sh/formula/topgrade\"><img alt=\"Homebrew\" src=\"https://img.shields.io/homebrew/v/topgrade.svg\"></a>\n\n <img alt=\"Demo\" src=\"doc/topgrade_demo.gif\">\n</div>\n\n\n## Introduction\n\n> **Note**\n> This is a fork of [topgrade by r-darwish](https://github.com/r-darwish/topgrade) to keep it maintained.\n\nKeeping your system up to date usually involves invoking multiple package managers.\nThis results in big, non-portable shell one-liners saved in your shell.\nTo remedy this, **Topgrade** detects which tools you use and runs the appropriate commands to update them.\n\n## Installation\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/topgrade.svg)](https://repology.org/project/topgrade/versions)\n\n- Arch Linux: [AUR](https://aur.archlinux.org/packages/topgrade)\n- NixOS: [Nixpkgs](https://search.nixos.org/packages?show=topgrade)\n- Void Linux: [XBPS](https://voidlinux.org/packages/?arch=x86_64&q=topgrade)\n- macOS: [Homebrew](https://formulae.brew.sh/formula/topgrade) or [MacPorts](https://ports.macports.org/port/topgrade/)\n- Windows: [Chocolatey][choco], [Scoop][scoop] or [Winget][winget]\n- PyPi: [pip](https://pypi.org/project/topgrade/)\n\n[choco]: https://community.chocolatey.org/packages/topgrade\n[scoop]: https://scoop.sh/#/apps?q=topgrade\n[winget]: https://winstall.app/apps/topgrade-rs.topgrade\n\nOther systems users can either use `cargo install` or the compiled binaries from the release page.\nThe compiled binaries contain a self-upgrading feature.\n\n## Usage\n\nJust run `topgrade`.\n\n## Configuration \n\nSee `config.example.toml` for an example configuration file.\n\n## Migration and Breaking Changes\n\nWhenever there is a **breaking change**, the major version number will be bumped,\nand we will document these changes in the release note, please take a look at \nit when updated to a major release.\n\n> Got a question? Feel free to open an issue or discussion!\n\n### Configuration Path\n\n#### `CONFIG_DIR` on each platform\n- **Windows**: `%APPDATA%`\n- **macOS** and **other Unix systems**: `${XDG_CONFIG_HOME:-~/.config}`\n\n`topgrade` will look for the configuration file in the following places, in order of priority:\n\n1. `CONFIG_DIR/topgrade.toml`\n2. `CONFIG_DIR/topgrade/topgrade.toml`\n\nIf the file with higher priority is present, no matter it is valid or not, the other configuration files will be ignored.\n\nOn the first run(no configuration file exists), `topgrade` will create a configuration file at `CONFIG_DIR/topgrade.toml` for you.\n\n### Custom Commands\n\nCustom commands can be defined in the config file which can be run before, during, or after the inbuilt commands, as required.\nBy 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`).\n\nOn 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.\nBut note that this requires the command to exit the shell correctly or else the shell will hang indefinitely.\n\n## Remote Execution\n\nYou can specify a key called `remote_topgrades` in the configuration file.\nThis key should contain a list of hostnames that have Topgrade installed on them.\nTopgrade will use `ssh` to run `topgrade` on remote hosts before acting locally.\nTo limit the execution only to specific hosts use the `--remote-host-limit` parameter.\n\n## Contribution\n\n### Problems or missing features?\n\nOpen a new issue describing your problem and if possible provide a solution.\n\n### Missing a feature or found an unsupported tool/distro?\n\nJust let us now what you are missing by opening an issue.\nFor tools, please open an issue describing the tool, which platforms it supports and if possible, give us an example of its usage.\n\n### Want to contribute to the code?\n\nJust fork the repository and start coding.\n\n### Contribution Guidelines\n\nSee [CONTRIBUTING.md](https://github.com/topgrade-rs/topgrade/blob/master/CONTRIBUTING.md)\n\n## Roadmap\n\n- [ ] Add a proper testing framework to the code base.\n- [ ] Add unit tests for package managers.\n- [ ] Split up code into more maintainable parts, eg. putting every linux package manager in a own submodule of linux.rs.\n\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "Upgrade all the things",
"version": "16.0.2",
"project_urls": {
"Source Code": "https://github.com/topgrade-rs/topgrade"
},
"split_keywords": [
"upgrade",
" update"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "bdb3656364a7d68a7d09028be262a3846b3bcdb32bd9714a7bee09583d264aaf",
"md5": "fcf805c88b16ee8c2419c47e4fb0d842",
"sha256": "50168f81ddc5daccf52ad39cff48b949e60ae21487a7661a558738d275c02f6b"
},
"downloads": -1,
"filename": "topgrade-16.0.2-py3-none-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "fcf805c88b16ee8c2419c47e4fb0d842",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 2658548,
"upload_time": "2024-12-07T07:30:15",
"upload_time_iso_8601": "2024-12-07T07:30:15.917084Z",
"url": "https://files.pythonhosted.org/packages/bd/b3/656364a7d68a7d09028be262a3846b3bcdb32bd9714a7bee09583d264aaf/topgrade-16.0.2-py3-none-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "72129d462dbe6128ffcfcf03ac18b3c030804ef06b59eec1b614ed23e1dea7d1",
"md5": "d28cab062f9966e1cc6e0ac0edb3f977",
"sha256": "a5ed73fdb255637ed1642344420ecde8775162fd5a466d270bde9051199c4b0b"
},
"downloads": -1,
"filename": "topgrade-16.0.2-py3-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "d28cab062f9966e1cc6e0ac0edb3f977",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 2471555,
"upload_time": "2024-12-07T07:30:18",
"upload_time_iso_8601": "2024-12-07T07:30:18.425793Z",
"url": "https://files.pythonhosted.org/packages/72/12/9d462dbe6128ffcfcf03ac18b3c030804ef06b59eec1b614ed23e1dea7d1/topgrade-16.0.2-py3-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a30cab5c57c4ef83a07e21aa7ca14c07e780ff80650fd611849c571bb36393df",
"md5": "311b953a0ce2b1dba1df36bb1c65e4e9",
"sha256": "31f98c6ad462feea2ba6b1172c2c814e88da9301e25f43ed520ba241367e4355"
},
"downloads": -1,
"filename": "topgrade-16.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "311b953a0ce2b1dba1df36bb1c65e4e9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 4256764,
"upload_time": "2024-12-07T07:30:20",
"upload_time_iso_8601": "2024-12-07T07:30:20.773137Z",
"url": "https://files.pythonhosted.org/packages/a3/0c/ab5c57c4ef83a07e21aa7ca14c07e780ff80650fd611849c571bb36393df/topgrade-16.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a7082930ab587d4cbe1051230510fa9bcc9faac36c92b535434b48550b0cd976",
"md5": "09167dc7adffe57812d843bb36988f29",
"sha256": "10c2e4e09f87301444d2e2fd14750b370579465b05e8284cfb077157e7cdfc3c"
},
"downloads": -1,
"filename": "topgrade-16.0.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "09167dc7adffe57812d843bb36988f29",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 4237311,
"upload_time": "2024-12-07T07:30:23",
"upload_time_iso_8601": "2024-12-07T07:30:23.444589Z",
"url": "https://files.pythonhosted.org/packages/a7/08/2930ab587d4cbe1051230510fa9bcc9faac36c92b535434b48550b0cd976/topgrade-16.0.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b714704535b08f2a7d0639a2ab7042704559bf76973cd49fca7a71a24484d71f",
"md5": "6ed76e4ba44f9b53536acfe3f9053245",
"sha256": "623a7b6907a6cd43250a02e47ddface4fc4ec1ad001164e11d0d568e993e39c5"
},
"downloads": -1,
"filename": "topgrade-16.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "6ed76e4ba44f9b53536acfe3f9053245",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 4318491,
"upload_time": "2024-12-07T07:30:25",
"upload_time_iso_8601": "2024-12-07T07:30:25.933777Z",
"url": "https://files.pythonhosted.org/packages/b7/14/704535b08f2a7d0639a2ab7042704559bf76973cd49fca7a71a24484d71f/topgrade-16.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "95fb2d075156f6e6d6d5291105a48870f9fc522a4d8c6feb8cc4e5015444d174",
"md5": "f141ff254bd7081e709f29d88cd22074",
"sha256": "561e63920606faf7ae51756b620f8e72343ca18065db771bcd55ac76e0f030c1"
},
"downloads": -1,
"filename": "topgrade-16.0.2-py3-none-win32.whl",
"has_sig": false,
"md5_digest": "f141ff254bd7081e709f29d88cd22074",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 2082672,
"upload_time": "2024-12-07T07:30:28",
"upload_time_iso_8601": "2024-12-07T07:30:28.060740Z",
"url": "https://files.pythonhosted.org/packages/95/fb/2d075156f6e6d6d5291105a48870f9fc522a4d8c6feb8cc4e5015444d174/topgrade-16.0.2-py3-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "99c8d8dfed1cede5a362540a3671d0e0ebd1493a0b4ee0e4511828bfcac47ce4",
"md5": "fa802ff5b7a5f541ef9937f71f7c4c1d",
"sha256": "c10323a5225101403bf9611e95fa005a0107f3d29f124bc927808f1dce3f2443"
},
"downloads": -1,
"filename": "topgrade-16.0.2-py3-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "fa802ff5b7a5f541ef9937f71f7c4c1d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 2356631,
"upload_time": "2024-12-07T07:30:30",
"upload_time_iso_8601": "2024-12-07T07:30:30.357451Z",
"url": "https://files.pythonhosted.org/packages/99/c8/d8dfed1cede5a362540a3671d0e0ebd1493a0b4ee0e4511828bfcac47ce4/topgrade-16.0.2-py3-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6856afb28adedad3f7afc147d807c581c8aa10a18ad0c19d574ada0dd84aa12c",
"md5": "e9bcc2d6c19790fd26997fafbc3a2fb5",
"sha256": "a9e882e537ba8013e0f3753396f6c22b1e8332bac382d59e84eda186822e93f2"
},
"downloads": -1,
"filename": "topgrade-16.0.2.tar.gz",
"has_sig": false,
"md5_digest": "e9bcc2d6c19790fd26997fafbc3a2fb5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 4422476,
"upload_time": "2024-12-07T07:30:33",
"upload_time_iso_8601": "2024-12-07T07:30:33.238744Z",
"url": "https://files.pythonhosted.org/packages/68/56/afb28adedad3f7afc147d807c581c8aa10a18ad0c19d574ada0dd84aa12c/topgrade-16.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-07 07:30:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "topgrade-rs",
"github_project": "topgrade",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "topgrade"
}