Rather than cloning `Iocaine` (along with the markov chain & everything)
all over the place, declare it shared state behind an `Arc<Mutex>`. This
should reduce the amount of cloning done noticably.
Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>
These are quite... simple, and cover little, but it's more than nothing!
While there, enable tests in the Nix package, so they're run in CI too.
Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>
This rebuilds the templating so that the *content* is no longer
pre-generated, only the parameters. It is up to the template (and some
newly implemented helper functions) to construct the output from those.
Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>
When configuring iocaine via environment variables, sections and
settings were separated by two underlines, but the `IOCAINE_` prefix
only had one. This felt weird, so now iocaine supports an `IOCAINE__`
prefix too, and keeps recognizing the old one too.
Documentation and examples updated to use the new naming. No mention of
the backwards compatibility - I'll just silently support that.
Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>
When calling `axum::serve`, use `.with_graceful_shutdown()` to register
a `ctrl+c` handler, so that Iocaine can be gracefully shut down. This
also allows gracefully shutting it down when running inside a container.
Fixes#1, thanks @alciregi!
Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>
The initial seed is used by the RNG, and the intended use is to allow
modifying the generated output without otherwise modifying the
configuration, while still being a static, controllable seed that can be
shared between instances if need be.
Thanks to @buherator@infosec.place for the idea!
Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>
This is expected to run through a systemd system service, with the
config file explicitly specified. Using XDG for the default config makes
little sense in that case, and ends up causing issues with a strict
systemd service file.
Signed-off-by: Gergely Nagy <me@gergo.csillger.hu>