Adds an invoiceninja-nixos flake input and two things built from it:
- nixosConfigurations.invoiceninja-test-nginx/-caddy: manual test
VMs, re-exported as-is from that repo rather than redefined here —
same principle as this crate being a client of the SDK, not a
second implementation of it.
- checks.invoiceninja-cli: an automated nixosTest (tests/, adapted
from invoiceninja-nixos's own test scaffolding) that boots a real
Invoice Ninja instance and runs the actual invoiceninja-cli binary
against it - create/list/get/update/invoice/payment/delete across
clients, invoices, and payments - rather than raw curl.
tests/common.nix's module import had to change from a relative
../nixos-module/invoiceninja.nix (which doesn't exist here) to a
parameter threaded from the flake input's nixosModules.invoiceninja.
Building the VM pulls from the invoiceninja-nixos cachix cache via a
nixConfig block, mirroring that repo's own.
Also fixes a wrong assumption the first version of this test's final
assertion made, caught by actually running it against a real server:
`clients list` with no `--status` does not exclude soft-deleted
records - confirmed empirically (Invoice Ninja returns everything
regardless of is_deleted unless status=active is passed explicitly).
Corrected the test to check is_deleted via `clients get` instead, and
fixed the misleadingly-incomplete --status doc comment in cli.rs that
had the same wrong assumption baked in.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
A command-line client for the Invoice Ninja v5 API, built on the
invoiceninja-sdk crate (consumed from crates.io, 0.2.0). Only the
clients resource is wired up so far, as the template the rest follow
- see CLAUDE.md and GOALS.md for the reasoning behind the shape of
things (the update fetch-merge-write pattern, why there's no Cargo
workspace with the SDK, the local-checkout override for
co-development, and the Nix flake packaging via packages.default and
overlays.default).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>