Go to file
Funky185540 72ee6598a6 Upgrade podman/docker containers (#850)
* containers: Pull newer versions of containers

Allows topgrade to update a users containers. It will automatically skip
containers which come from the `localhost` repo as these are self-built.
Respects the version number the containers were initially checked out
with in order not to introduce semver-breaking changes.

Works with podman and docker.

* topgrade: Add 'containers' step

* containers: Ignore some errors for docker

This patch is needed to achieve compatibility between docker and podman.
In particular, docker doesn't store/tell the user from which repository
(i.e. `hub.docker.com`, or `registry.fedoraproject.org`) a container
originates. This has the side-effect, that self-built containers cannot
be distinguished from publicly available containers. Therefore this
patch introduces an exception to the error handling when pulling, by
scanning the output of the `docker pull` command. If it finds the
`registry does not exist` substring in the output, it will skip the
container but **NOT** consider the whole update step failed.

* containers: Skip '<none>' containers

that result from either intermediate products of a container build or
when images are dangling.

* steps: containers: simplify error handling

And don't return errors from within the "unknown container registry"
handling, since that would immediately terminate the whole update which
isn't intended.
2022-03-05 22:00:07 +02:00
.github Update Issue Templates (#848) 2022-01-30 14:05:21 +02:00
doc Logo artboard 2020-07-09 21:35:18 +03:00
src Upgrade podman/docker containers (#850) 2022-03-05 22:00:07 +02:00
.gitignore Initial commit 2018-05-29 23:48:30 +03:00
build.rs Fix formatting 2020-02-26 15:33:06 +02:00
Cargo.lock Version bump 2022-01-24 12:11:02 +02:00
Cargo.toml Version bump 2022-01-24 12:11:02 +02:00
config.example.toml Add a flag to disable showing Arch Linux news (fix #786) 2021-10-29 09:53:30 +03:00
LICENSE Rename LICENCE to LICENSE (#96) 2018-11-21 07:56:41 +02:00
README.md Update README.md (#837) 2022-01-23 16:44:58 +02:00
rustfmt.toml Increase the maximum line size 2018-07-03 14:33:48 +03:00
topgrade.8 Improve man page (#803) 2021-11-24 22:47:22 +02:00

Topgrade

Travis AppVeyor GitHub release Crates.io AUR homebrew

Demo

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

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.

Topgrade requires Rust 1.51 or above.

Usage

Just run topgrade. See the wiki for the list of things Topgrade supports.

Customization

See config.example.toml for an example configuration file.

Configuration path

The configuration should be placed in the following paths depending by the operating system:

  • Windows - %APPDATA%/topgrade.toml
  • macOS and other Unix systems - ${XDG_CONFIG_HOME:-~/.config}/topgrade.toml

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.