# # //===----------------------------------------------------------------------===// # // # // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # // See https://llvm.org/LICENSE.txt for license information. # // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # // # //===----------------------------------------------------------------------===// # import os import subprocess import sys class ScriptError(Exception): """Convenience class for user errors generated""" def __init__(self, msg): super(Exception, self).__init__(msg) def error(msg): raise ScriptError(msg) def print_line(msg, form="i"): print("{}: ({}) {}".format(os.path.basename(sys.argv[0]), form, msg)) def print_info_line(msg): print_line(msg) def print_error_line(msg): print_line(msg, form="x") class RunResult: """ Auxiliary class for execute_command() containing the results of running a command """ def __init__(self, args, stdout, stderr, returncode): self.executable = args[0] self.stdout = stdout.decode("utf-8") self.stderr = stderr.decode("utf-8") self.returncode = returncode self.command = " ".join(args) def execute_command(args): """ Run a command with arguments: args Return RunResult containing stdout, stderr, returncode """ handle = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = handle.communicate() returncode = handle.wait() return RunResult(args, stdout, stderr, returncode) # end of file