in src/main.py [0:0]
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
description='Custodian configuration cli entering point'
)
# -- top level sub-parser
sub_parsers = parser.add_subparsers(
dest=ACTION_DEST, required=True, help='Available actions'
)
_ = sub_parsers.add_parser(
CREATE_INDEXES_ACTION, help='Re-create MongoDB indexes'
)
_ = sub_parsers.add_parser(
INIT_VAULT_ACTION,
help='Enables secret engine and crated a necessary token in Vault',
)
set_meta_parser = sub_parsers.add_parser(
SET_META_REPOS_ACTION,
help='Sets rules metadata gitlab repositories to vault',
)
class MetaAccessType:
def __call__(self, item: str) -> tuple[str, str]:
res = item.strip().split(':', maxsplit=1)
if len(res) != 2:
raise ValueError('Invalid value. Must be <project>:<secret>')
return res[0], res[1]
set_meta_parser.add_argument(
'--repositories',
nargs='+',
required=True,
type=MetaAccessType(),
help='List of repositories to set for meta: '
'--repositories <project1>:<secret> <project2>:<secret>',
)
_ = sub_parsers.add_parser(
CREATE_BUCKETS_ACTION, help='Creates necessary buckets in Minio'
)
_ = sub_parsers.add_parser(
UPDATE_API_GATEWAY_MODELS_ACTION,
help='Regenerates API Gateway models from existing pydantic validators',
)
_ = sub_parsers.add_parser(
SHOW_PERMISSIONS_ACTION,
help='Dumps existing permissions to stdout. '
'By default, dumps only user permission. '
'Use flags to dump admin permissions as well ',
)
_ = sub_parsers.add_parser(
INIT_ACTION, help='Creates system user and sets up some base settings'
)
_ = sub_parsers.add_parser(
GENERATE_OPENAPI_ACTION,
help='Generates Open API spec for Rule Engine API',
)
parser_run = sub_parsers.add_parser(RUN_ACTION, help='Run on-prem server')
parser_run.add_argument(
'-g',
'--gunicorn',
action='store_true',
default=False,
help='Specify the flag is you want to run the server via Gunicorn',
)
parser_run.add_argument(
'-nw',
'--workers',
type=int,
required=False,
help='Number of gunicorn workers. Must be specified only '
'if --gunicorn flag is set',
)
parser_run.add_argument(
'--host',
default=DEFAULT_HOST,
type=str,
help='IP address where to run the server',
)
parser_run.add_argument(
'--port',
default=DEFAULT_PORT,
type=int,
help='IP Port to run the server on',
)
return parser