From 2a2d0dbdbbd7e1bb38f3061d886221fc83ee0b8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20TAUVEL?= Date: Wed, 14 Dec 2022 09:14:28 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A9=B9=20use=20argparse=20library=20for?= =?UTF-8?q?=20parsing=20CLI=20arguments?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/delarte/__main__.py | 7 ++++++- src/delarte/cli_parser.py | 42 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/delarte/cli_parser.py diff --git a/src/delarte/__main__.py b/src/delarte/__main__.py index 66005c5..0c5b369 100644 --- a/src/delarte/__main__.py +++ b/src/delarte/__main__.py @@ -12,11 +12,14 @@ usage: delarte [-h|--help] - print this message import sys import time +from pprint import pprint + from . import api from . import hls from . import muxing from . import naming from . import www +from .cli_parser import create_parser, get_args_as_list def fail(message, code=1): @@ -68,7 +71,9 @@ def create_progress(): def main(): """CLI command.""" - args = sys.argv[1:] + parser = create_parser() + args = get_args_as_list(parser) + if not args or args[0] == "-h" or args[0] == "--help": print(__doc__) return 0 diff --git a/src/delarte/cli_parser.py b/src/delarte/cli_parser.py new file mode 100644 index 0000000..ee45458 --- /dev/null +++ b/src/delarte/cli_parser.py @@ -0,0 +1,42 @@ +import argparse + + +def create_parser() -> argparse.ArgumentParser: + """return a parser for the script arguments + + Returns: + argparse.ArgumentParser: argument parser object dedicated to get arguments from CLI call + """ + parser = argparse.ArgumentParser() + parser.add_argument( + "url", + help="url of Arte movie's webpage", + action="store", + type=str, + ) + parser.add_argument( + "-l", + "--languages", + help="one of the language code proposed by Arte", + required=False, + action="store", + type=str, + nargs="?", + ) + parser.add_argument( + "-r", + "--resolution", + help="directory where the output files will be stored", + required=False, + action="store", + type=str, + nargs="?", + ) + + return parser + + +def get_args_as_list(parser): + parser.parse_args() + args_namespace = parser.parse_args() + return [args_namespace.url, args_namespace.languages, args_namespace.resolution]