Allow common args to be written the same way regular args are.

This commit is contained in:
Todd Gamblin 2016-10-30 15:57:59 -07:00
parent 8f21332fec
commit 4be703cde0
2 changed files with 25 additions and 49 deletions

View File

@ -27,7 +27,7 @@
import spack.store import spack.store
import spack.modules import spack.modules
from spack.util.pattern import Bunch from spack.util.pattern import Args
__all__ = ['add_common_arguments'] __all__ = ['add_common_arguments']
_arguments = {} _arguments = {}
@ -60,56 +60,26 @@ def __call__(self, parser, namespace, values, option_string=None):
specs = [x for x in specs if x.satisfies(values, strict=True)] specs = [x for x in specs if x.satisfies(values, strict=True)]
namespace.specs = specs namespace.specs = specs
parms = Bunch( _arguments['constraint'] = Args(
flags=('constraint',), 'constraint', nargs='*', action=ConstraintAction,
kwargs={ help='Constraint to select a subset of installed packages')
'nargs': '*',
'help': 'Constraint to select a subset of installed packages',
'action': ConstraintAction
})
_arguments['constraint'] = parms
parms = Bunch( _arguments['module_type'] = Args(
flags=('-m', '--module-type'), '-m', '--module-type', help='Type of module files',
kwargs={ default='tcl', choices=spack.modules.module_types)
'help': 'Type of module files',
'default': 'tcl',
'choices': spack.modules.module_types
})
_arguments['module_type'] = parms
parms = Bunch( _arguments['yes_to_all'] = Args(
flags=('-y', '--yes-to-all'), '-y', '--yes-to-all', action='store_true', dest='yes_to_all',
kwargs={ help='Assume "yes" is the answer to every confirmation request.')
'action': 'store_true',
'dest': 'yes_to_all',
'help': 'Assume "yes" is the answer to every confirmation request.'
})
_arguments['yes_to_all'] = parms
parms = Bunch( _arguments['recurse_dependencies'] = Args(
flags=('-r', '--dependencies'), '-r', '--dependencies', action='store_true', dest='recurse_dependencies',
kwargs={ help='Recursively traverse spec dependencies')
'action': 'store_true',
'dest': 'recurse_dependencies',
'help': 'Recursively traverse spec dependencies'
})
_arguments['recurse_dependencies'] = parms
parms = Bunch( _arguments['clean'] = Args(
flags=('--clean',), '--clean', action='store_false', dest='dirty',
kwargs={ help='Clean environment before installing package.')
'action': 'store_false',
'dest': 'dirty',
'help': 'Clean environment before installing package.'
})
_arguments['clean'] = parms
parms = Bunch( _arguments['dirty'] = Args(
flags=('--dirty',), '--dirty', action='store_true', dest='dirty',
kwargs={ help='Do NOT clean environment before installing.')
'action': 'store_true',
'dest': 'dirty',
'help': 'Do NOT clean environment before installing.'
})
_arguments['dirty'] = parms

View File

@ -140,3 +140,9 @@ class Bunch(object):
def __init__(self, **kwargs): def __init__(self, **kwargs):
self.__dict__.update(kwargs) self.__dict__.update(kwargs)
class Args(Bunch):
"""Subclass of Bunch to write argparse args more naturally."""
def __init__(self, *flags, **kwargs):
super(Args, self).__init__(flags=tuple(flags), kwargs=kwargs)