python-smartpm: Remove unnecessary error reporting improvement patch

The error reporting improvements were merged upstream (smartpm 406541f569)
and refactored later (smartpm 20af0aac33), yet a part of the patch was
kept here (oe-core 5fc580fc44).

Due to the upstream refactoring the patch still applies cleanly, but it
isn't actually needed. The added changes are duplicate or dead code.

(From OE-Core rev: f1cfa9ab5d79198671275cea2c9864ce0cbcb9f0)

Signed-off-by: Daniel Klauer <daniel.klauer@gin.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Klauer, Daniel
2016-05-17 12:59:25 +00:00
committed by Richard Purdie
parent be0cabf816
commit e44c849769
2 changed files with 0 additions and 92 deletions

View File

@@ -1,91 +0,0 @@
Improve error reporting in smart
Add code to check proper command line arguments for various
smart commands. Exit with error if erroneous/additional arguments
are given in the command line.
Upstream-Status: Pending
Signed-off-by: Bogdan Marinescu <bogdan.a.marinescu@intel.com>
diff --git a/smart/util/optparse.py b/smart/util/optparse.py
index 6fff1bc..f445a3b 100644
--- a/smart/util/optparse.py
+++ b/smart/util/optparse.py
@@ -70,6 +70,8 @@ import sys, os
import types
import textwrap
from gettext import gettext as _
+from smart import Error
+import re
def _repr(self):
return "<%s at 0x%x: %s>" % (self.__class__.__name__, id(self), self)
@@ -710,6 +712,12 @@ class Option:
self.action, self.dest, opt, value, values, parser)
def take_action(self, action, dest, opt, value, values, parser):
+ # Keep all the options in the command line in the '_given_opts' array
+ # This will be used later to validate the command line
+ given_opts = getattr(parser.values, "_given_opts", [])
+ user_opt = re.sub(r"^\-*", "", opt).replace("-", "_")
+ given_opts.append(user_opt)
+ setattr(parser.values, "_given_opts", given_opts)
if action == "store":
setattr(values, dest, value)
elif action == "store_const":
@@ -821,6 +829,54 @@ class Values:
setattr(self, attr, value)
return getattr(self, attr)
+ # Check if the given option has the specified number of arguments
+ # Raise an error if the option has an invalid number of arguments
+ # A negative number for 'nargs' means "at least |nargs| arguments are needed"
+ def check_args_of_option(self, opt, nargs, err=None):
+ given_opts = getattr(self, "_given_opts", [])
+ if not opt in given_opts:
+ return
+ values = getattr(self, opt, [])
+ if type(values) != type([]):
+ return
+ if nargs < 0:
+ nargs = -nargs
+ if len(values) >= nargs:
+ return
+ if not err:
+ if nargs == 1:
+ err = _("Option '%s' requires at least one argument") % opt
+ else:
+ err = _("Option '%s' requires at least %d arguments") % (opt, nargs)
+ raise Error, err
+ elif nargs == 0:
+ if len( values ) == 0:
+ return
+ raise Error, err
+ else:
+ if len(values) == nargs:
+ return
+ if not err:
+ if nargs == 1:
+ err = _("Option '%s' requires one argument") % opt
+ else:
+ err = _("Option '%s' requires %d arguments") % (opt, nargs)
+ raise Error, err
+
+ # Check that at least one of the options in 'actlist' was given as an argument
+ # to the command 'cmdname'
+ def ensure_action(self, cmdname, actlist):
+ given_opts = getattr(self, "_given_opts", [])
+ for action in actlist:
+ if action in given_opts:
+ return
+ raise Error, _("No action specified for command '%s'") % cmdname
+
+ # Check if there are any other arguments left after parsing the command line and
+ # raise an error if such arguments are found
+ def check_remaining_args(self):
+ if self.args:
+ raise Error, _("Invalid argument(s) '%s'" % str(self.args))
class OptionContainer: