ads1_2021/code/python/src/setup/cli.py

60 lines
2.5 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# IMPORTS
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
from argparse import ArgumentError
from src.local.typing import *;
from src.core.log import *;
from src.core.utils import DedentIgnoreFirstLast;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# GLOBAL VARIABLES
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
parser = None;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# METHODS
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def GetArgumentParser() -> argparse.ArgumentParser:
global parser;
if not isinstance(parser, argparse.ArgumentParser):
parser = argparse.ArgumentParser(
prog='code/main.py',
description=DedentIgnoreFirstLast('''
\033[93;1mBeschreibung:\033[0m
\033[93;2mEin Programm, das verschiedene Algorithmen aus dem Kurs AlgoDat I testet.\033[0m
'''),
formatter_class=argparse.RawTextHelpFormatter,
);
parser.add_argument('mode',
nargs=1,
choices=['version', 'help', 'run'],
help=DedentIgnoreFirstLast('''
help = Hilfsanleitung anzeigen.
version = Version anzeigen.
run = Algorithmen ausführen.
'''),
);
parser.add_argument('--it', action='store_true', help='Startet das Programm im interaktiven Modus.')
parser.add_argument('-q', '--quiet', action='store_true', help='Blendet alle Konsole-Messages aus.')
parser.add_argument('--debug', action='store_true', help='Blendet Debugging-Befehle ein.')
parser.add_argument('--checks', nargs=1, type=str, default=['False'],
help=DedentIgnoreFirstLast('''
(bool) Ob vor und nach Ausführung von Algorithmen Checks
auf Inputs/Outputs ausgeführt werden sollen.
'''),
),
parser.add_argument('--colour', nargs=1, type=str, default=['False'], help='(bool) Ob Logging färblich angezeigt wird.')
parser.add_argument('--config', nargs=1, type=str, help='(string) Pfad zur Configdatei (nur für run Endpunkt).');
return parser;
def GetArgumentsFromCli(*cli_args: str) -> argparse.Namespace:
parser = GetArgumentParser();
return parser.parse_args(cli_args);