eid-ops/scripts/cosmosdata/argv.py
2024-05-13 18:50:11 +02:00

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