Skip to content

Commit b53f54a

Browse files
committed
Proper cli with argparse.
1 parent c642b84 commit b53f54a

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

dash/development/component_generator.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@
55
import subprocess
66
import shlex
77
import os
8+
import argparse
89

910
from .base_component import generate_class_file
1011
from .base_component import generate_imports
1112
from .base_component import generate_classes_files
1213

1314

15+
class _CombinedFormatter(argparse.ArgumentDefaultsHelpFormatter,
16+
argparse.RawDescriptionHelpFormatter):
17+
pass
18+
19+
1420
# pylint: disable=too-many-locals
1521
def generate_components(component_src, project_shortname):
1622
is_windows = sys.platform == 'win32'
@@ -57,17 +63,20 @@ def generate_components(component_src, project_shortname):
5763

5864

5965
def cli():
60-
if len(sys.argv) != 3:
61-
print(
62-
'Invalid number of arguments'
63-
' expected 2 but got {}\n\n'
64-
'Arguments: src project_shortname'.format(len(sys.argv) - 1),
65-
file=sys.stderr
66-
)
67-
sys.exit(1)
68-
# pylint: disable=unbalanced-tuple-unpacking
69-
src, project_shortname = sys.argv[1:]
70-
generate_components(src, project_shortname)
66+
parser = argparse.ArgumentParser(
67+
prog='dash-generate-components',
68+
formatter_class=_CombinedFormatter,
69+
description='Generate dash components by extracting the metadata '
70+
'using react-docgen. Then map the metadata to python classes.'
71+
)
72+
parser.add_argument('src', help='React components source directory.')
73+
parser.add_argument(
74+
'project_shortname',
75+
help='Name of the project to export the classes files.'
76+
)
77+
78+
args = parser.parse_args()
79+
generate_components(args.src, args.project_shortname)
7180

7281

7382
if __name__ == '__main__':

0 commit comments

Comments
 (0)