The RunException will be throws when the a command's return_code is not equal zero. With this an external caller can catch that and has access to the command/args, the result code, the stdout and stderr output.
Signed-off-by: Heiko Thiery <heiko.thi...@gmail.com> --- tools/patman/tools.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tools/patman/tools.py b/tools/patman/tools.py index 710f1fdcd3..ca1c9114ab 100644 --- a/tools/patman/tools.py +++ b/tools/patman/tools.py @@ -313,6 +313,18 @@ def GetTargetCompileTool(name, cross_compile=None): target_name = name return target_name, extra_args +class RunException(Exception): + """Exception that is thrown when the command fails""" + def __init__(self, args, result): + self.args = args + self.stdout = result.stdout.strip() + self.stderr = result.stderr.strip() + self.return_code = result.return_code + + def __str__(self): + return ("Error %d running '%s': %s" % + (self.return_code,' '.join(self.args), self.stderr)) + def Run(name, *args, **kwargs): """Run a tool with some arguments @@ -349,9 +361,7 @@ def Run(name, *args, **kwargs): result = command.RunPipe([all_args], capture=True, capture_stderr=True, env=env, raise_on_error=False, binary=binary) if result.return_code: - raise Exception("Error %d running '%s': %s" % - (result.return_code,' '.join(all_args), - result.stderr)) + raise RunException(all_args, result) return result.stdout except: if env and not PathHasFile(env['PATH'], name): -- 2.30.2