aboutsummaryrefslogtreecommitdiff
path: root/scripts/cli_parser.py
blob: d42ae66bd0a5dca9d5234e4e6692b0f56cf79524 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"""Common utilities for CLI parsers"""
from uuid import UUID
from typing import Optional
from argparse import ArgumentParser

def init_cli_parser(program: str, description: Optional[str] = None) -> ArgumentParser:
    """Initialise the CLI arguments parser."""
    parser = ArgumentParser(prog=program, description=description)

    parser.add_argument(
        "databaseuri", type=str, help="URI to connect to MariaDB")
    parser.add_argument(
        "redisuri", type=str, help="URI to connect to the redis server.")
    parser.add_argument(
        "redisprefix", type=str, help="A prefix to the job ID.")
    parser.add_argument("jobid", type=UUID, help="Job ID that this belongs to")
    parser.add_argument(
        "--redisexpiry",
        type=int,
        default=86400,
        help="How long to keep any redis keys around.")
    parser.add_argument(
        "--loglevel",
        type=str,
        default="INFO",
        choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
        help="The severity of events to track with the logger.")
    return parser

def add_global_data_arguments(parser: ArgumentParser) -> ArgumentParser:
    """Add the global (present in nearly ALL scripts) CLI arguments."""
    parser.add_argument("speciesid",
                        type=int,
                        help="Species to which bundle relates.")
    parser.add_argument("populationid",
                        type=int,
                        help="Population to group data under")
    return parser