Skip to content

Commit

Permalink
Allow common args to be written the same way regular args are.
Browse files Browse the repository at this point in the history
  • Loading branch information
tgamblin committed Oct 31, 2016
1 parent 8f21332 commit 4be703c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 49 deletions.
68 changes: 19 additions & 49 deletions lib/spack/spack/cmd/common/arguments.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

import spack.store
import spack.modules
from spack.util.pattern import Bunch
from spack.util.pattern import Args
__all__ = ['add_common_arguments']

_arguments = {}
Expand Down Expand Up @@ -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)]
namespace.specs = specs

parms = Bunch(
flags=('constraint',),
kwargs={
'nargs': '*',
'help': 'Constraint to select a subset of installed packages',
'action': ConstraintAction
})
_arguments['constraint'] = parms
_arguments['constraint'] = Args(
'constraint', nargs='*', action=ConstraintAction,
help='Constraint to select a subset of installed packages')

parms = Bunch(
flags=('-m', '--module-type'),
kwargs={
'help': 'Type of module files',
'default': 'tcl',
'choices': spack.modules.module_types
})
_arguments['module_type'] = parms
_arguments['module_type'] = Args(
'-m', '--module-type', help='Type of module files',
default='tcl', choices=spack.modules.module_types)

parms = Bunch(
flags=('-y', '--yes-to-all'),
kwargs={
'action': 'store_true',
'dest': 'yes_to_all',
'help': 'Assume "yes" is the answer to every confirmation request.'
})
_arguments['yes_to_all'] = parms
_arguments['yes_to_all'] = Args(
'-y', '--yes-to-all', action='store_true', dest='yes_to_all',
help='Assume "yes" is the answer to every confirmation request.')

parms = Bunch(
flags=('-r', '--dependencies'),
kwargs={
'action': 'store_true',
'dest': 'recurse_dependencies',
'help': 'Recursively traverse spec dependencies'
})
_arguments['recurse_dependencies'] = parms
_arguments['recurse_dependencies'] = Args(
'-r', '--dependencies', action='store_true', dest='recurse_dependencies',
help='Recursively traverse spec dependencies')

parms = Bunch(
flags=('--clean',),
kwargs={
'action': 'store_false',
'dest': 'dirty',
'help': 'Clean environment before installing package.'
})
_arguments['clean'] = parms
_arguments['clean'] = Args(
'--clean', action='store_false', dest='dirty',
help='Clean environment before installing package.')

parms = Bunch(
flags=('--dirty',),
kwargs={
'action': 'store_true',
'dest': 'dirty',
'help': 'Do NOT clean environment before installing.'
})
_arguments['dirty'] = parms
_arguments['dirty'] = Args(
'--dirty', action='store_true', dest='dirty',
help='Do NOT clean environment before installing.')
6 changes: 6 additions & 0 deletions lib/spack/spack/util/pattern.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,3 +140,9 @@ class Bunch(object):

def __init__(self, **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)

0 comments on commit 4be703c

Please sign in to comment.