69 lines
2.7 KiB
Python
69 lines
2.7 KiB
Python
import argparse
|
|
|
|
|
|
DEFAULTS = {'debug': False,
|
|
}
|
|
|
|
|
|
def get_parser(description, arguments, defaults):
|
|
"""
|
|
|
|
:param description: Program description
|
|
:param arguments: List of well known arguments in use
|
|
:param defaults: Default values
|
|
|
|
:return: ArgumentParser
|
|
:rtype: argparse.ArgumentParser
|
|
"""
|
|
parser = argparse.ArgumentParser(description = description,
|
|
add_help = True,
|
|
formatter_class = argparse.ArgumentDefaultsHelpFormatter,
|
|
)
|
|
for this in arguments:
|
|
if this == 'debug':
|
|
parser.add_argument('--debug',
|
|
dest='debug',
|
|
action='store_true', default=defaults.get(this, DEFAULTS.get(this)),
|
|
help='Enable debug operation'
|
|
)
|
|
elif this == 'dirs':
|
|
parser.add_argument('--dirs',
|
|
dest = 'dirs',
|
|
default = None,
|
|
nargs = '*',
|
|
help = 'Find hosts based on cosmos host directorys ending with SUFFIX',
|
|
metavar = 'SUFFIX',
|
|
)
|
|
elif this == 'outfile':
|
|
parser.add_argument('--outfile',
|
|
dest = 'outfile',
|
|
default = None,
|
|
help = 'Output filename (to not print to stdout)',
|
|
metavar = 'FILENAME',
|
|
)
|
|
elif this == 'hostsfile':
|
|
parser.add_argument('--hostsfile',
|
|
dest = 'hostsfile',
|
|
default = None,
|
|
help = 'Input hosts YAML file',
|
|
metavar = 'FILENAME',
|
|
)
|
|
elif this == 'addfile':
|
|
parser.add_argument('--addfile',
|
|
dest = 'addfile',
|
|
default = None,
|
|
help = 'Add contents of this YAML file to the output',
|
|
metavar = 'FILENAME',
|
|
)
|
|
elif this == 'classesfile':
|
|
parser.add_argument('--classesfile',
|
|
dest='classesfile',
|
|
default=None,
|
|
help='Input classes YAML file (cosmos-rules.yaml)',
|
|
metavar='FILENAME',
|
|
)
|
|
else:
|
|
raise ValueError('Unknown argument: {}'.format(this))
|
|
|
|
return parser
|
|
|