29 lines
843 B
Python
29 lines
843 B
Python
"""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)
|