emaint: fix exclusive action handling
authorZac Medico <zmedico@gentoo.org>
Fri, 2 Aug 2013 20:53:14 +0000 (13:53 -0700)
committerZac Medico <zmedico@gentoo.org>
Fri, 2 Aug 2013 20:53:14 +0000 (13:53 -0700)
It broke in commit 42b0a6e898172c375d4d47c3346b25dac2333bf0.

pym/portage/emaint/main.py

index 4b6d6669c711c81f63cbca41af73f4925e7871fb..34763971f3b0b49b589e062d9e33470e40583764 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2005-2012 Gentoo Foundation
+# Copyright 2005-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 from __future__ import print_function
@@ -6,7 +6,7 @@ from __future__ import print_function
 
 import sys
 import textwrap
-from optparse import OptionParser, OptionValueError
+from optparse import OptionParser
 
 
 import portage
@@ -34,13 +34,6 @@ class OptionItem(object):
                self.type = opt.get('type', None)
                self.dest = opt.get('dest', None)
 
-       def _exclusive(self, option, *args, **kw):
-               """Generic check for the 2 default options
-               """
-               if getattr(self.parser, var, ""):
-                       raise OptionValueError("%s and %s are exclusive options"
-                               % (getattr(self.parser, var), option))
-
 
 def usage(module_controller):
                _usage = "usage: emaint [options] COMMAND"
@@ -160,19 +153,24 @@ def emaint_main(myargv):
        if args[0] not in module_names:
                parser.error("%s target is not a known target" % args[0])
 
-
+       check_opt = None
        func = status = long_action = None
        for opt in parser_options:
                if opt.long == '--check':
                        # Default action
-                       status = opt.status
-                       func = opt.func
-                       long_action = 'check'
-               elif opt.status and getattr(options, opt.long.lstrip("-"), False):
+                       check_opt = opt
+               if opt.status and getattr(options, opt.long.lstrip("-"), False):
+                       if long_action is not None:
+                               parser.error("--%s and %s are exclusive options" %
+                                       (long_action, opt.long))
                        status = opt.status
                        func = opt.func
                        long_action = opt.long.lstrip('-')
-                       break
+
+       if long_action is None:
+               long_action = 'check'
+               func = check_opt.func
+               status = check_opt.status
 
        if args[0] == "all":
                tasks = []