* 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.
- add the required functionality for zgenom
- fix the env::var for zinit - it should be ZINIT_HOME, not ZBXF, as
this is also set in zgenom, but makes topgrade fail when zinit is not
installed
Co-authored-by: Sven Hergenhahn <sven.hergenhahn@dm.de>
`dein` is a plugin manager for vim, which was supported for a while in
an earlier version of topgrade. This patch reintroduces support for
upgrading "plain" `dein`, rather that the `dein` UI which is invoked by
`DeinUpdate` in vim.
Previously when performing the "system" upgrade step, rpm-ostree would
be passed a "--yes" argument when it was configured in topgrade.
However, this is not an option available for rpm-ostree, so it would
cause an error and abort execution of the updates.
* steps: toolbox: Add module to upgrade toolboxes
This adds a module to upgrade all toolboxes found on a host system.
[Toolbox][1] (More recently: `toolbx`) is a tool that easily provides
mutable, containerized command line environments. It is a means to work
and develop in a mutable environment on immutable operating systems such
as Fedora Silverblue, CoreOS, Kinoite and much more. However, it is not
limited to these use cases.
The integration into topgrade works as follows: Toolbx makes many of the
hosts folders available form inside the toolbx container by default. In
particular, all of the hosts filesystem is mapped under `/run/host`. This
module exploits this fact by:
- Gathering a list of toolboxes available on the host that runs
`topgrade`
- Executing `toolbox run` for each of these toolboxes to run a command
inside the toolboxes, **using the executing `topgrade` executable with
the `--only system` arguments**
[1]: https://containertoolbx.org/
* toolbx: Integrate toolbx into the application
* Toolbx is Linux specific
Co-authored-by: Roey Darwish Dror <roey.ghost@gmail.com>
* Re-add the Go step via go-global-update
go-global-update (https://github.com/Gelio/go-global-update) is a small
tool to update all executables installed in a user's GOBIN, effectively
providing a `go get -u all` replacement for Go 1.16+.
Since it appears that Go will not be receiving a built-in way to do this
in the near future, this could be a good option in the meantime.
* Skip silently if go-global-update is not present
On a rpm-ostree based system, topgrade would previously fail to detect
the rpm-ostree executable and fall back to yum instead, which isn't
available. This was caused by constructing a Path instance with
`Path::new`, rather than querying the underlying OS for a path to the
rpm-ostree executable.
Make the `system` update step use `which` to determine if an executable
called "rpm-ostree" is available on the system and get the correct path
to the executable.
* Bedrock Linux (fix#745)
* Add more distributions
* fix
* fix
* Fix
* Merge
* Move pacnew to the correct location
* Version bump
* Correct spelling for GNOME Shell extensions update (#778)
* fix gnome shell extensions update object path (#788)
* config: ArchPackageManager should be snake_case (#784)
* config: ArchPackageManager should be snake_case
* Remove unnecessary strum macro
* Add arch_package_manager to config.example.toml
* Add release pipeline
* Run GNOME update only when using GNOME
* Delete travis file and appveyor
* Bump
* Support rust 1.51.0 (#789)
* Cross compilation
* Bump
* fix: GNOME detection for customized version (#790)
Signed-off-by: Noel Georgi <git@frezbo.dev>
* Add a flag to disable showing Arch Linux news (fix#786)
* Bump
* Update pacstall (fix#769)
* Add an option to force vim plug update (#795)
* Add an option to force vim plug update (fix#751)
* Rustfmt
* Update src/config.rs
Co-authored-by: M*C*O <mcofficer@gmx.de>
Co-authored-by: M*C*O <mcofficer@gmx.de>
* Add new step pacdiff (#796)
* Add Support for Spicetify (#798)
* Look for ~/.config/emacs directory in Windows (fix#766)
* Pass --force to doom when -y is set (fix#799)
* Implement cleanup for flatpak (#801)
* Cleanup flatpak
* Fix compile error
* Make sure we only move our values at the very end
* Access config.cleanup() through ExecutionContext
* Improve man page (#803)
Wordings & argument format
* Avoid running remote topgrade on the current host (fix#804) (#807)
* Merge the command line and the configuration flags of --only and --disable (fix#805) (#806)
* Merge the command line and the configuration flags of --only and --disable (fix#805)
* Fix
* Fix rust requirement in the readme
* Selective yes (fix#802) (#808)
* Selective yes flag (fix#802)
* Selective yes flag (fix#802)
* selective yes
* MacOS
* Fix bedrock detection
* Bedrock fixes
* format
* Fedora fixes
Co-authored-by: Björn Daase <bjoern.daase@gmail.com>
Co-authored-by: modularTaco <37046961+modularTaco@users.noreply.github.com>
Co-authored-by: M*C*O <mcofficer@gmx.de>
Co-authored-by: Noel Georgi <git@frezbo.dev>
Co-authored-by: Manuel Hässig <mhaessig@users.noreply.github.com>
Co-authored-by: Janek <27jf@pm.me>