diff --git a/qubes/tools/__init__.py b/qubes/tools/__init__.py index 6acae71a..94ea046b 100644 --- a/qubes/tools/__init__.py +++ b/qubes/tools/__init__.py @@ -175,7 +175,6 @@ class VmNameAction(QubesAction): def __call__(self, parser, namespace, values, option_string=None): ''' Set ``namespace.vmname`` to ``values`` ''' - print("{!r}".format(values)) setattr(namespace, self.dest, values) def parse_qubes_app(self, parser, namespace): @@ -377,3 +376,22 @@ def get_parser_for_command(command): raise AttributeError('cannot find parser in module') return parser + + +# pylint: disable=protected-access +class VmNameGroup(argparse._MutuallyExclusiveGroup): + ''' Adds an a VMNAME, --all & --exclude parameters to a + :py:class:``argparse.ArgumentParser```. + ''' + + def __init__(self, container, required, vm_action=VmNameAction): + super(VmNameGroup, self).__init__(container, required=required) + self.add_argument('--all', action='store_true', + dest='all_domains', + help='perform the action on all qubes') + container.add_argument('--exclude', action='append', default=[], + help='exclude the qube from --all') + self.add_argument('VMNAME', action=vm_action, nargs='*', + default=[]) # the default parameter is important! see + # https://stackoverflow.com/questions/35044288 + # and `argparse.ArgumentParser.parse_args()`