system-updater/README.md

54 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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/<DATETIME>-<packagerName>-<executorName?/stepNumber??>.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 packagerss 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
```