forked from fcode/delarte
♻️ wrapped parser functions in a Parser object
This commit is contained in:
parent
f00dfea85b
commit
5b811be84b
|
@ -17,7 +17,7 @@ from . import hls
|
|||
from . import muxing
|
||||
from . import naming
|
||||
from . import www
|
||||
from .cli_parser import create_parser, get_args_as_list
|
||||
from .cli_parser import CLIParser
|
||||
|
||||
|
||||
def fail(message, code=1):
|
||||
|
@ -69,8 +69,8 @@ def create_progress():
|
|||
|
||||
def main():
|
||||
"""CLI command."""
|
||||
parser = create_parser()
|
||||
args = get_args_as_list(parser)
|
||||
parser = CLIParser()
|
||||
args = parser.get_args_as_list()
|
||||
|
||||
if not args or args[0] == "-h" or args[0] == "--help":
|
||||
print(__doc__)
|
||||
|
|
|
@ -1,42 +1,43 @@
|
|||
"""CLI arguments related module."""
|
||||
import argparse
|
||||
|
||||
|
||||
def create_parser() -> argparse.ArgumentParser:
|
||||
"""return a parser for the script arguments
|
||||
class CLIParser(argparse.ArgumentParser):
|
||||
"""Parser responsible for parsing CLI 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="?",
|
||||
)
|
||||
def __init__(self):
|
||||
"""Generate a parser."""
|
||||
super().__init__()
|
||||
self.add_argument(
|
||||
"url",
|
||||
help="url of Arte movie's webpage",
|
||||
action="store",
|
||||
type=str,
|
||||
)
|
||||
self.add_argument(
|
||||
"-l",
|
||||
"--languages",
|
||||
help="one of the language code proposed by Arte",
|
||||
required=False,
|
||||
action="store",
|
||||
type=str,
|
||||
nargs="?",
|
||||
)
|
||||
self.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(self):
|
||||
"""Get arguments from CLI as a list.
|
||||
|
||||
|
||||
def get_args_as_list(parser):
|
||||
parser.parse_args()
|
||||
args_namespace = parser.parse_args()
|
||||
return [args_namespace.url, args_namespace.languages, args_namespace.resolution]
|
||||
Returns:
|
||||
List: liste ordonnée des arguments
|
||||
"""
|
||||
args_namespace = self.parse_args()
|
||||
return [args_namespace.url, args_namespace.languages, args_namespace.resolution]
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
"""Test package."""
|
|
@ -1,21 +1,25 @@
|
|||
"""test for command-line args parser
|
||||
"""
|
||||
"""Unit test for command-line args parser."""
|
||||
|
||||
from unittest import TestCase, mock
|
||||
|
||||
import argparse
|
||||
|
||||
from src.delarte.cli_parser import create_parser, get_args_as_list
|
||||
from src.delarte.cli_parser import CLIParser
|
||||
|
||||
|
||||
class TestCliParser(TestCase):
|
||||
"""Tests for args parser."""
|
||||
|
||||
def setUp(self):
|
||||
self.parser = create_parser()
|
||||
"""Create a CLI Parser."""
|
||||
self.parser = CLIParser()
|
||||
|
||||
def tearDown(self):
|
||||
"""Delete the CLI Parser."""
|
||||
self.parser = None
|
||||
|
||||
def test_args_parse(self):
|
||||
"""Test this parser gets the arguments from CLI."""
|
||||
args = vars(
|
||||
self.parser.parse_args(
|
||||
[
|
||||
|
@ -45,7 +49,8 @@ class TestCliParser(TestCase):
|
|||
),
|
||||
)
|
||||
def test_get_args_as_list(self, *mock_args):
|
||||
args = get_args_as_list(self.parser)
|
||||
"""Test the return method for listing arguments."""
|
||||
args = self.parser.get_args_as_list()
|
||||
self.assertEqual(
|
||||
args,
|
||||
[
|
||||
|
|
Loading…
Reference in New Issue