summaryrefslogtreecommitdiffstats
path: root/firefly_cli/registry.py
blob: f983af81e75399aebdabc95a8143f0f7bf7a3d66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)