From 166f82d0bfdc598099c088275d68dc42499694f9 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Thu, 2 Jul 2026 09:10:46 +0200 Subject: feat: tx add --from-id/--to-id to disambiguate same-name accounts (v0.3.7) ISSUES.md #2: two accounts can share a name (e.g. expense id 52 and revenue id 129 both "Nexi"), making --from/--to ambiguous and unresolvable. Add --from-id/--to-id to target an account by numeric id. Per side, exactly one of the name flag or the id flag; sides independent. The id path fetches the account (resolver.account_by_id), validating existence before writing. Name-only callers unchanged; JSON/exit unchanged, so PATCH. Co-Authored-By: Claude Opus 4.8 --- firefly_cli/resolver.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'firefly_cli/resolver.py') diff --git a/firefly_cli/resolver.py b/firefly_cli/resolver.py index 7673af6..2a73e79 100644 --- a/firefly_cli/resolver.py +++ b/firefly_cli/resolver.py @@ -28,6 +28,12 @@ class Resolver: def account(self, name): return self._match("account", self._list("/api/v1/accounts"), name) + def account_by_id(self, acc_id): + # Escape hatch for same-name accounts (ISSUES.md #2): GET the account + # directly; a bad id 404s and client.request surfaces a FireflyError. + item = self.client.request("GET", f"/api/v1/accounts/{acc_id}")["data"] + return {"id": item["id"], **item.get("attributes", {})} + def tag(self, name): return self._match("tag", self._list("/api/v1/tags"), name) -- cgit v1.2.3