diff --git a/README.md b/README.md index f1b90e2..d4bdff8 100644 --- a/README.md +++ b/README.md @@ -5,31 +5,61 @@ Based on the Masters Book of Serious Sysadmin's Best Practices Chapter, this scr ## Crash course ``` -wget https://this.repo.srs.ly/alban/changelog/bla/bla/raw/changelog +wget https://git.interhacker.space/alban/changelog/raw/branch/master/changelog.sh chmod +x changelog -sudo ./changelog +sudo -E ./changelog ``` +## How it works + The script will ask for your name if no `CHANGELOG_USERNAME` environment variable is found. -Then it will ask for a first change informations: +Then it will ask for change informations: * The nature of the change: which software / domain did you change? Why? * Some comments: How did you do it? What was happening? Is it fixed? +You can then add multiple lines for a single change as well as multiple changes for a changelog entry (ex: deploy a new service and remove old packages). + +This changelog entry is now inserted on top of the /etc/changelog file, which is created with a default entry if not present yet. + **Limitations** -* Please note that to enter multiline comments, you have for now to escape newline characters using the `\\\\n` sequence. Ugly. +* Please note that to enter multiline comments, you have for now to escape newline characters using the `\\\\n` sequence. Ugly. * By default, it will attempt to create and edit `/etc/changelog`. You better be running it as root, by default. +## Plugins and config -# Possible improvements +You can add plugins to hook actions at two points in time. The `plugins-available` directory contains two working examples of these hooks. -* Enable a sudo requirement / ways to restart oneself as a root user -* Enable simple multiline comments -* Provide a way to attach files -* Provide a way (plugins?) to report each change to a central server +* adding a changelog entry lines. Example `content-hastebin.sh` plugin pushes a file content to a pastebin service +* saving the changelog. Example `output-changelog-server.sh` plugin pushes a changelog to a remote central server + +You can activate the plugins by placing/linking them in the `plugins-enabled` directory. + +The plugins might need some configuration variables. + +Do `mv config.sample.sh config.sh` and edit the file to suit your needs. + + + +## Baking a fat exec + +While providing a mean to run plugins is cool, it's not very efficient at deployment time. + +Run `build.sh` to get a single exec, ready for shipping, embedding: + +* your config.sh file +* all the plugins you added to plugins-enabled + +## Possible improvements + +* [x] Enable a sudo requirement / ways to restart oneself as a root user +* [] Enable simple multiline comments +* [x] Provide a way to attach files +* [x] Provide a way (plugins?) to report each change to a central server +* [x] Provide a build system to cook config and plugins in a single exec