diff options
| author | Danilo M. <danix@danix.xyz> | 2026-06-30 10:59:43 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-06-30 10:59:43 +0200 |
| commit | ba872d1e48ad229903316fc30e61cebe9c115258 (patch) | |
| tree | bb6f37e12423f56bd66ab2fa784644813a141174 /firefly_cli/registry.py | |
| parent | 09dddee3ebbbbbb8ed6eac74370232e76e84d7bb (diff) | |
| download | firefly-cli-ba872d1e48ad229903316fc30e61cebe9c115258.tar.gz firefly-cli-ba872d1e48ad229903316fc30e61cebe9c115258.zip | |
feat: command registry and context
Diffstat (limited to 'firefly_cli/registry.py')
| -rw-r--r-- | firefly_cli/registry.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/firefly_cli/registry.py b/firefly_cli/registry.py new file mode 100644 index 0000000..f983af8 --- /dev/null +++ b/firefly_cli/registry.py @@ -0,0 +1,21 @@ +# Copyright (C) 2026 Danilo M. <danix@danix.xyz> GPL-2.0-only +from dataclasses import dataclass +from typing import Callable, Optional + +@dataclass +class Command: + name: str # e.g. "tx add" + handler: Callable # fn(args, ctx) -> int + help: str = "" + args: Optional[Callable] = None # fn(argparse_subparser) -> None + +_COMMANDS = [] + +def command(name, help="", args=None): + def deco(fn): + _COMMANDS.append(Command(name=name, handler=fn, help=help, args=args)) + return fn + return deco + +def all_commands(): + return list(_COMMANDS) |
