def build_parser()

in src/main.py [0:0]


def build_parser() -> argparse.ArgumentParser:
    parser = argparse.ArgumentParser(
        description='Modular service main CLI endpoint'
    )
    # -- top level sub-parser
    sub_parsers = parser.add_subparsers(dest=ACTION_DEST, required=True,
                                        help='Available actions')

    # generate-openapi
    parser_open_api = sub_parsers.add_parser(
        GENERATE_OPENAPI_ACTION,
        help='Generates Open API spec for API'
    )
    parser_open_api.add_argument(
        '-f', '--filename', type=Path, required=True,
        help='Filename where to write spec'
    )

    # run
    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(
        '-sw', '--swagger', action='store_true', default=False,
        help='Specify the flag is you want to enable swagger'
    )
    parser_run.add_argument(
        '-swp', '--swagger-prefix', type=str, default=DEFAULT_SWAGGER_PREFIX,
        help='Swagger path prefix, (default: %(default)s)'
    )
    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')

    # init-vault
    _ = sub_parsers.add_parser(INIT_VAULT_ACTION, help='Init token in vault')

    # init
    _ = sub_parsers.add_parser(
        CREATE_SYSTEM_USER_ACTION,
        help='Creates a system user that can perform actions on behalf of '
             'other users'
    )

    # create-indexes
    _ = sub_parsers.add_parser(
        CREATE_INDEXES_ACTION, help='Creates indexes for mongo'
    )
    _ = sub_parsers.add_parser(
        DUMP_PERMISSIONS_ACTION, help='Dumps all the available permission'
    )
    _ = sub_parsers.add_parser(
        UPDATE_DEPLOYMENT_RESOURCES_ACTION,
        help='Updates api definition insider deployment_resources.json'
    )
    return parser