Bahtiar `kalkin-` Gadimov преди 8 години
родител
ревизия
3549a9d4ec
променени са 1 файла, в които са добавени 19 реда и са изтрити 1 реда
  1. 19 1
      qubes/tools/__init__.py

+ 19 - 1
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()`