Slthy / Microplus-Lenex

Web scraper and Lenex encoder for swimming events hosted by Microplus s.r.l
MIT License
1 stars 0 forks source link

Use argparse instead of inquirer #11

Open CremaLuca opened 1 year ago

CremaLuca commented 1 year ago

SECONDO ME utilizzare argparse invece di inquirer e meglio siccome la repository è immediatamente utilizzabile per essere chiamata tramite sotto-processo da un eventuale altro linguaggio di programmazione; eviterei il contatto con l'utente quando non è essenziale/a meno che le possibilità tra cui scegliere non dipendano da qualcosa al di fuori del controllo del progamma e si scoprano solo durante l'esecuzione (es. fai scegliere l'utente da una lista di competizioni attualmente in corso/appena passate), ma anche in quel caso aggiungi il parameter CLI "--interactive" o qualcosa del genere.

https://github.com/Slthy/Microplus-Lenex/blob/b6380314e274b9a568c6320ebd00d117442f74a9/main.py#L8-L9

e.g.

def microplus_url_type(arg_value, pat=re.compile(r"^https://.*[0-9]+\.microplustiming\.com/NU_([0-9]+(_[0-9]+)+)-([0-9]+(_[0-9]+)+)_[a-zA-Z]+_web\.php$")):
    if not pat.match(arg_value):
        raise argparse.ArgumentTypeError("Invalid microplus URL")
    return arg_value

def parse_args() -> dict:
    parser = argparse.ArgumentParser()
    parser.add_argument('mode', choices=['scrape-and-compile', 'compile-only'], help="Execution mode", required=True)
    parser.add_argument('url', type=microplus_url_type, help=""Competition's URL", required=False)
    # ecc...
    return vars(parser.parse_args())
Slthy commented 1 year ago

Ci sta, volevo provare inquirer perché mi sembrava carino, però effettivamente è poco funzionale (pensando ad un eventuale pipe del script in altri processi).