Repository navigation
v0.2.1
Release v0.2.1
Release Highlights
This release introduces remote-capable plans — the ability to record your configuration tasks into a portable file and apply it on any other machine that has gonf installed. A new gonf plan -stdout flag makes it easy to pipe plans into other tools, and several documentation improvements make the plan/apply workflow easier to understand and use.
Features
Print plans to stdout
gonf plan now supports a -stdout flag that prints the JSONL plan directly to stdout instead of writing plan.jsonl to a directory:
gonf plan -stdout <task>…This makes it simple to pipe plans into scp, rsync, or any other transfer tool, or to inspect them with jq. Plans that require file content blobs (e.g. SyncDir) will emit a clear error, since those need a directory for the accompanying blobs/ folder — use -o <dir> for those.
Improvements
Better documentation of the plan/apply engine
The docs now lead with the plan → apply model:
- A new dedicated plan.md page walks through recording, the JSONL wire format, applying, and the CLI, with a note on why local and remote runs share the same code path.
- tasks.md and helpers.md now explain how each helper behaves in plan-record mode versus local mode (e.g.
WhenPathExistsemitswhen_begin/when_endrecipes in a plan, whileWhen(func)cannot be serialized). - The conf-rex-gaps page is updated to reflect that gonf can now serialize and apply plans on another host; the remaining gap is SSH transport/orchestration, not plan mechanics.
- The README gains a quick-reference CLI cheatsheet and a one-line summary of the single apply engine.
Testability of package-manager detection
The OS package-manager detection step in the Package resource can now be stubbed in unit tests. This lets CI runners on Ubuntu verify dnf-related package logic without requiring dnf to be installed, which stabilizes the test suite across environments.
Bug Fixes
- Fixed the package dry-run test to work correctly on CI runners whose default package manager is not dnf.
Migration Notes
No breaking changes. Existing local gonf <task>… invocations and gonf plan -o <dir> / gonf apply <plan.jsonl> workflows are unaffected. The -stdout flag is purely additive.