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:
|
if token.find(' ') != -1:
|
||||||
token = '"' + token + '"'
|
token = '"' + token + '"'
|
||||||
tokens.append(token)
|
tokens.append(token)
|
||||||
ret = '>' + ' '.join(tokens) + '<'
|
ret = ' '.join(tokens)
|
||||||
if wd is not None:
|
if wd is not None:
|
||||||
ret += f' in {wd}'
|
ret += f' in {wd}'
|
||||||
return ret
|
return ret
|
||||||
|
|
@ -60,15 +60,17 @@ async def run_cmd(
|
||||||
|
|
||||||
want_bytes = (output_encoding == "bytes")
|
want_bytes = (output_encoding == "bytes")
|
||||||
|
|
||||||
def __log(prio, *args):
|
def __log(prio, *args, verbose=verbose):
|
||||||
if verbose:
|
if verbose:
|
||||||
log(prio, "|", *args)
|
log(prio, "|", *args)
|
||||||
|
|
||||||
def __check_exit_code(code):
|
def __check_exit_code(code: int, stdout=None, stderr=None):
|
||||||
if code != 0 and (throw or verbose):
|
if code == 0:
|
||||||
msg = f'Command returned error {code}: {pretty_cmd(args, wd)}'
|
return
|
||||||
if verbose:
|
if (throw or verbose):
|
||||||
__log(ERR, msg)
|
msg = f'Command returned error {code}: {pretty_cmd(args, wd)}: '
|
||||||
|
if stderr:
|
||||||
|
msg += stderr.strip()
|
||||||
if throw:
|
if throw:
|
||||||
raise RuntimeError(msg)
|
raise RuntimeError(msg)
|
||||||
|
|
||||||
|
|
@ -188,7 +190,8 @@ async def run_cmd(
|
||||||
|
|
||||||
exit_code = await proc.wait()
|
exit_code = await proc.wait()
|
||||||
await asyncio.gather(*tasks)
|
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
|
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
|
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
|
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
|
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
|
return stdout_s, stderr_s
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue