# Description 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](https://github.com/topgrade-rs/topgrade) for a solution that auto-detect everything it can. # Roadmap * [X] Run commands found in different configuration files * [X] Have Pre / Post commands to do before / after the upgrade * [X] Do all the installations and give a summary of success and errors at the end * [X] Improve errors ^^' * [X] Executors from a packagers need to be executed in order and only if all of the previous failed * [ ] Maybe test with `which` (the crate?) if the command exist before trying to execute it? (especially with admin rights) * [ ] Tests * [ ] Prevent the usage of `sudo` and equivalent, add a config to say "needAdminRights" * [ ] Parallel execution of commands * [ ] Packagers need to state their dependency * [ ] 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/--.log * [ ] Start self and command "Nicer" (Not sure it is possible in all systems, or in the same way) * [ ] Documentation * [X] Readme * [ ] Code ## Nice to have * [ ] Being usable as a lib (I set the minimum possible in main.rs but the insterface have not been thought out) * [ ] Being given a directory and/or a list of files * [ ] Being given an already populated `Updater`’s struct * [ ] Have subcommands to interactively act on packagers’s config * [ ] List * [ ] Show * [ ] Create * [ ] Delete * [ ] Update? (Bad way: Show + Delete + Create? ^^') * [ ] More config examples * [ ] System executors for all/most famous systems (openSUSE, Fedora, Arch, …) * [ ] At least an example of binary downlowd (curl or wget) # Usage The configuration folder is at [the standard path for configuration on your system](https://docs.rs/directories/latest/directories/struct.ProjectDirs.html#method.config_dir) 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 ``` # Installation ```sh cargo install --locked system-updater ```