"""Common code for CLI subcommands""" import argparse import sys from trovedb import trove_factory, user_env, trove as tr def display_error(msg: str) -> None: print(f"Error: {msg}", file=sys.stderr) class CliEnv: """Environment for CLI subcommands""" def __init__(self, verbose: bool = False): self.verbose = verbose self.local_trove = trove_factory.get_trove(user_env.TROVEBASE) if user_env.TROVEBASE else None def checked_trove(self) -> tr.Trove: if self.local_trove is None: display_error("No local trove found") raise SystemExit() return self.local_trove def common_args(parser: argparse.ArgumentParser) -> None: parser.add_argument('-v', '--verbose', action='store_true') def get_env(args: argparse.Namespace) -> CliEnv: return CliEnv(args.verbose)