From 71658d023fdbf60be6b4501372519bf8171d6e13 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Thu, 2 Jul 2026 09:21:27 +0200 Subject: fix: register cmd_add handler correctly for tx add (v0.3.8) v0.3.7 placed the @registry.command decorator above a helper (_resolve_side) inserted between the decorator and cmd_add, so the registry bound the helper as the "tx add" handler. Unit tests call cmd_add directly and missed it; live CLI dispatch failed with "_resolve_side() missing 2 required positional arguments". Move the helper above the decorator and add a regression test asserting the registered handler is cmd_add. Found by live smoke test against the test instance. Also note in resolver that Firefly returns 401 (not 404) for an unknown account id. Co-Authored-By: Claude Opus 4.8 --- firefly_cli/commands/transaction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'firefly_cli/commands/transaction.py') diff --git a/firefly_cli/commands/transaction.py b/firefly_cli/commands/transaction.py index 3ce20f3..60af6f4 100644 --- a/firefly_cli/commands/transaction.py +++ b/firefly_cli/commands/transaction.py @@ -39,7 +39,6 @@ def _add_args(p): p.add_argument("--skip-dupes", dest="skip_dupes", action="store_true", help="skip if a tx with same amount+date+source+destination exists") -@registry.command("tx add", help="record a transaction; source/destination resolve to accounts, category/tags auto-create", args=_add_args) def _resolve_side(ctx, name, acc_id, side): # Exactly one of name/id per side (mutually exclusive). id path (ISSUES.md # #2) fetches by id, validating existence; name path resolves as before. @@ -49,6 +48,7 @@ def _resolve_side(ctx, name, acc_id, side): f"(got name={name!r}, id={acc_id!r})") return ctx.resolver.account_by_id(acc_id) if acc_id else ctx.resolver.account(name) +@registry.command("tx add", help="record a transaction; source/destination resolve to accounts, category/tags auto-create", args=_add_args) def cmd_add(args, ctx): src = _resolve_side(ctx, args.source, args.source_id, "from") dst = _resolve_side(ctx, args.dest, args.dest_id, "to") -- cgit v1.2.3