1919import sys
2020from argparse import ArgumentParser , FileType , RawDescriptionHelpFormatter
2121from itertools import chain
22- from typing import TYPE_CHECKING , Any , Dict , NoReturn , Optional , Sequence , TextIO , Type , Union
22+ from typing import TYPE_CHECKING , Any , Dict , List , NoReturn , Optional , Sequence , TextIO , Type , Union
2323
2424from cyclonedx .model import Property
2525from cyclonedx .output import make_outputter
5353class Command :
5454 @classmethod
5555 def make_argument_parser (cls , sco : ArgumentParser , ** kwargs : Any ) -> ArgumentParser :
56+ # region Command
5657 p = ArgumentParser (
5758 description = 'Creates CycloneDX Software Bill of Materials (SBOM) from Python projects and environments.' ,
5859 formatter_class = RawDescriptionHelpFormatter ,
@@ -62,7 +63,9 @@ def make_argument_parser(cls, sco: ArgumentParser, **kwargs: Any) -> ArgumentPar
6263 sp = p .add_subparsers (metavar = '<command>' , dest = 'command' ,
6364 # not required. if omitted: show help and exit
6465 required = False )
66+ # region Command
6567
68+ # region SubCOmmand
6669 op = ArgumentParser (add_help = False )
6770 op .add_argument ('--short-PURLs' ,
6871 help = 'Omit all qualifiers from PackageURLs.\n '
@@ -124,21 +127,24 @@ def make_argument_parser(cls, sco: ArgumentParser, **kwargs: Any) -> ArgumentPar
124127 action = 'store_false' )
125128
126129 scbbc : Type ['BomBuilder' ]
127- for sct , scbbc in (
128- ('environment' , EnvironmentBB ),
129- ('requirements' , RequirementsBB ),
130- ('pipenv' , PipenvBB ),
131- ('poetry' , PoetryBB ),
130+ sct : str
131+ scta : List [str ]
132+ for scbbc , sct , * scta in (
133+ (EnvironmentBB , 'environment' , 'env' , 'venv' ),
134+ (RequirementsBB , 'requirements' ),
135+ (PipenvBB , 'pipenv' ),
136+ (PoetryBB , 'poetry' ),
132137 ):
133138 spp = scbbc .make_argument_parser (add_help = False )
134- sp .add_parser (sct ,
139+ sp .add_parser (sct , aliases = scta ,
135140 help = (spp .description or '' ).split ('\n ' )[0 ].strip ('. ' ),
136141 description = spp .description ,
137142 epilog = spp .epilog ,
138143 parents = [spp , op , sco ],
139144 formatter_class = p .formatter_class ,
140145 allow_abbrev = p .allow_abbrev ,
141146 ).set_defaults (_bbc = scbbc )
147+ # endregion SubCommand
142148
143149 return p
144150
0 commit comments