1# Copyright 2018 Google LLC 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# https://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15import subprocess 16 17from synthtool.log import logger 18 19 20def run(args, *, cwd=None, check=True, hide_output=True): 21 if hide_output: 22 stdout = subprocess.PIPE 23 else: 24 stdout = None 25 26 try: 27 return subprocess.run( 28 args, 29 stdout=stdout, 30 stderr=subprocess.STDOUT, 31 cwd=cwd, 32 check=check, 33 encoding="utf-8", 34 ) 35 except subprocess.CalledProcessError as exc: 36 logger.error( 37 f"Failed executing {' '.join((str(arg) for arg in args))}:\n\n{exc.stdout}" 38 ) 39 raise exc 40