A tool to help keeping your system up to date.
This tool will remember the applications you installed and update them all (even from a git repo). To do that you will need to configure all the commands you want to run when upgrating your system (see the example_config
folder).
See also topgrade for a solution that auto-detect everything it can.
The configuration folder is at the standard path for configuration on your system and the commads should be in the packagers subfolder.
Example on linux it is at ~/.config/systemupdater/packagers/
Just start the program, no option needed in you day to day usage.
sh
sup
Each packager file is executed in alphabetical order. To help maintain a coherent order of execution we use the following scheme: <RANK>-<NAME>
.
Where <RANK>
is a number corresponding to the moment the packager should be executed. And <NAME>
the human name you want to call it.
The current default <RANK>
are categorized as follow:
* We start at 5 and go 10 by 10 so you can easily add step in between (even if we do not expect that something may be more important to update than the system… Something related to system security maybe?)
* "05" is for updating the system’s standard package manager (apt
, …)
* "15" is for other package managers (flatpak
, …)
* "25" is for toolchain updater
* "35" is for language specific package manager
* "45" is for tools you update yourself with git
* No rank are executed last. Depending on the implementation, this rank may disappear in the future
Note: For now the ranks are only a suggestion, in the future we expect to be able to start all the one with the same <RANK>
in parallel. Hence the space between steps: you may not want to run multiples CPU intensive packager in the same time.
sh
cargo install --locked system-updater
You will also need some configurations so the program knows what to execute. You can find the latest config examples in the git repo. ```sh cd /tmp curl -O "https://framagit.org/Zykino/system-updater/-/archive/master/system-updater-master.tar.gz?path=examplepackagers" tar -xzf system-updater-master.tar.gz\?path=examplepackagers
mv system-updater-master-examplepackagers/examplepackagers/ $HOME/.config/systemupdater/packagers ```
which
(the crate?) if the command exist before trying to execute it? (especially with admin rights)This is unordered. Following my motivations and PR?
* [ ] Tests
* [ ] Add a --no-continue -K
argument to stop at the first error
* [ ] Add options to show full config (all executor and if they can be used or not found), and computed config (with only the executors that will be used).
* [ ] Prevent the usage of sudo
and equivalent, add a config to say "needAdminRights" or "execute as" == sudo <username>
* [ ] Parallel execution of commands
* [ ] Show a progress bar general and the list of task in execution (with their stepNumber): "helix PostInstall (1/2)"
* [ ] All input should be prevented (even asking for sudo
’s password)
* [ ] All output (standard and errors) needs to be redirected in files. Maybe something like: /tmp/system-updater/--dump
option? Something else?
Updater
’s struct