mirror of
ssh://git.janware.com/janware/proj/jw-pkg
synced 2026-04-25 17:45:55 +02:00
jw.pkg.lib.util.run_cmd(): Add stderr to exception
If an error happens, append stderr to the exception thrown. Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
a160555596
commit
2906c697de
1 changed files with 15 additions and 8 deletions
|
|
@ -20,7 +20,7 @@ def pretty_cmd(cmd: list[str], wd=None):
|
|||
if token.find(' ') != -1:
|
||||
token = '"' + token + '"'
|
||||
tokens.append(token)
|
||||
ret = '>' + ' '.join(tokens) + '<'
|
||||
ret = ' '.join(tokens)
|
||||
if wd is not None:
|
||||
ret += f' in {wd}'
|
||||
return ret
|
||||
|
|
@ -60,15 +60,17 @@ async def run_cmd(
|
|||
|
||||
want_bytes = (output_encoding == "bytes")
|
||||
|
||||
def __log(prio, *args):
|
||||
def __log(prio, *args, verbose=verbose):
|
||||
if verbose:
|
||||
log(prio, "|", *args)
|
||||
|
||||
def __check_exit_code(code):
|
||||
if code != 0 and (throw or verbose):
|
||||
msg = f'Command returned error {code}: {pretty_cmd(args, wd)}'
|
||||
if verbose:
|
||||
__log(ERR, msg)
|
||||
def __check_exit_code(code: int, stdout=None, stderr=None):
|
||||
if code == 0:
|
||||
return
|
||||
if (throw or verbose):
|
||||
msg = f'Command returned error {code}: {pretty_cmd(args, wd)}: '
|
||||
if stderr:
|
||||
msg += stderr.strip()
|
||||
if throw:
|
||||
raise RuntimeError(msg)
|
||||
|
||||
|
|
@ -188,7 +190,8 @@ async def run_cmd(
|
|||
|
||||
exit_code = await proc.wait()
|
||||
await asyncio.gather(*tasks)
|
||||
__check_exit_code(exit_code)
|
||||
if want_bytes:
|
||||
__check_exit_code(exit_code)
|
||||
|
||||
stdout_b = b"".join(stdout_parts_b) if stdout_parts_b else None
|
||||
stderr_b = b"".join(stderr_parts_b) if stderr_parts_b else None
|
||||
|
|
@ -205,6 +208,10 @@ async def run_cmd(
|
|||
|
||||
stdout_s = stdout_b.decode(stdout_dec_enc, errors="replace") if stdout_b is not None else None
|
||||
stderr_s = stderr_b.decode(stderr_dec_enc, errors="replace") if stderr_b is not None else None
|
||||
|
||||
if not want_bytes:
|
||||
__check_exit_code(exit_code, stdout=stdout_s, stderr=stderr_s)
|
||||
|
||||
return stdout_s, stderr_s
|
||||
|
||||
finally:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue