From f834525b61f5f50b430a6dd2ab0280a8b3911e2e Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Tue, 23 May 2023 09:01:52 +0200 Subject: Add release page for Bashtard v2.0.0 --- content/projects/bashtard/releases/2.0.0.md | 68 +++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 content/projects/bashtard/releases/2.0.0.md diff --git a/content/projects/bashtard/releases/2.0.0.md b/content/projects/bashtard/releases/2.0.0.md new file mode 100644 index 0000000..29623a7 --- /dev/null +++ b/content/projects/bashtard/releases/2.0.0.md @@ -0,0 +1,68 @@ +--- +title: Bashtard v2.0.0 +date: 2023-05-22 +type: project-release +packages: + bashtard-2.0.0.deb: https://dist.tyil.nl/bashtard/bashtard-2.0.0/bashtard-2.0.0.deb + bashtard-2.0.0.tar.gz: https://dist.tyil.nl/bashtard/bashtard-2.0.0/bashtard-2.0.0.tar.gz +--- + +### Added + +- The `var` subcommand is now referenced in `usage()`. +- A `pkg` subcommand has been added, to allow for direct interaction with the + `pkg_*()` utilities provided by Bashtard. +- `config_subkeys()` and `config_subkeys_for` have been added, to look up + subkeys defined in config files. These can help when you want to use a list + somewhere in your configuration. +- A `backup` subcommand has been added. This backup system uses borg, which must + be installed, but should be generic enough to be usable by most people out of + the box. +- The `Makefile` has been extended with targets for creating packages for + GNU+Linux distributions. +- The `$BASHTARD_PLATFORM` variable now contains an additional entry, `init`, to + allow for handling different init systems on GNU+Linux in a cleaner fashion. +- A `file_hash` utility function has been added. It currently uses `md5`, but is + written in such a fashion that this can easily be updated for the future. Its + intent is to encapsulate differences between naming and usage of hashing + utilities found on different systems. +- A `dir_hash` utility function has been added, which will give you a hash based + on the file contents of a directory. This function will find files + recursively, calculate a hash for each of them, and then calculate a hash + based on the total result. The intended goal is to allow running before and + after templating some files, to deduce whether something actually changed. +- A `diff` subcommand has been added to show all non-committed changes. It is a + convenience wrapper to avoid having to change directory and run `git diff` to + get an overview of all pending changes. +- A `pull` subcommand has been added to only pull the latest changes into the + `$BASHTARD_ETCDIR`, without running `sync` on all the playbooks. +- A new global variable, `$BASHTARD_PLAYBOOK_VARS` has been added. Currently, + its only purpose is to check for "required" variables to be used in the + playbook. Before an `add` or `sync`, any variables declared to be `required` + in the `$BASHTARD_PLAYBOOK_VARS` array will be checked to be non-empty. If any + are empty, an error will be thrown and the playbook will not be ran. +- A new directory has been added, `data.d`, for data that should be shared + between playbook runs. This new directory is intended to create a clearer + seperation between a playbook and a user's specific data used by the playbook, + which in turn should make re-using playbooks easier. +- A convenience function has been introduced, `playbook_path()`, which can give + you the absolute path to the playbook's base or data directory. +- A `top` subcommand has been added to give some generic information of all + nodes known to Bashtard. It uses information from the `sysinfo` subcommand, + which it will pull in through an `ssh` invocation. + +### Changed + +- The `ssh` subcommand's configuration has been nested under `bashtard`, e.g. + `ssh.host` is now `bashtard.ssh.host`. It should also be correctly using this + value for establishing the SSH connection. +- `svc_enable()` now checks for the `rc.d` file to exist before running `grep` + on it. +- `pkg_*()` functions no longer _require_ a `pkg.*` value to be defined. If one + is not set explicitly, a warning will be generated, but the original name + passed to the `pkg_*()` function will be used by the host's package manager. +- `datetime()` now always passes `-u` on to `date`. +- All manpages now include a `NAME` section. +- The `sync` subcomman will now `stash` any changes before it attempts to + `pull`. Afterwards, `stash pop` will be ran to apply the last `stash`ed + changes again. -- cgit v1.1