def show_usage(cli: Genbu, error: bool = False): name = " ".join(cli.complete_name()) or "cli" footer = f"Try '{name} -h' for more information." _usage = usage(cli, "Genbu CLI example with subcommands.", footer) if error: sys.exit(_usage) print(_usage) sys.exit(0)
from pathlib import Path import sys from genbu import Genbu, Param, combinators as comb, usage def cat(path: Path) -> str: """Concatenate contents of path to stdout.""" return path.read_text() cli = Genbu( cat, params=[ Param("path", ["-p", "--path"], comb.One(Path)), Param( "help_", ["-?", "-h", "--help"], comb.Emit(True), aggregator=lambda _: sys.exit(usage(cli)), ), ], ) if __name__ == "__main__": try: print(cli.run()) except Exception as exc: name = " ".join(cli.complete_name()) print(f"{name}: {exc}\nTry '{name} -h' for more information.")