print real time
All checks were successful
Python package / lint (push) Successful in 6s
Publish Python 🐍 distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Successful in 8s
Publish Python 🐍 distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Successful in 5s
Publish Python 🐍 distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to TestPyPI (push) Successful in 5s

This commit is contained in:
Brendan Haines 2024-09-14 18:32:39 -06:00
parent 0e9eba4900
commit 5891409fdb

View File

@ -69,20 +69,25 @@ def wrap(command: List[str], config: Path, retries: int, version: bool, dry_run:
attempt = 0
while attempt <= retries:
# run the command
result = subprocess.run(
with subprocess.Popen(
" ".join(command),
shell=True,
stderr=subprocess.STDOUT,
stdout=subprocess.PIPE,
encoding="utf-8",
)
) as proc:
stdout = ""
while True:
c = proc.stdout.read(1)
if c == b"":
break
s = c.decode("utf-8")
stdout += s
print(s, end="", flush=True)
return_code = proc.wait()
# TODO: print lines real time as the subprocess runs
print(result.stdout, end="")
if result.returncode:
if return_code:
# failed
title = f"Command failed with exit code {result.returncode}"
title = f"Command failed with exit code {return_code}"
if attempt < retries:
title += f" - Retrying (attempt {attempt+1}/{retries})"
else:
@ -92,7 +97,7 @@ def wrap(command: List[str], config: Path, retries: int, version: bool, dry_run:
title = "Command succeeded"
MAX_LINES = 20
lines = result.stdout.splitlines()
lines = stdout.splitlines()
if len(lines) > MAX_LINES:
lines = lines[-MAX_LINES:]
message = (
@ -106,13 +111,13 @@ def wrap(command: List[str], config: Path, retries: int, version: bool, dry_run:
with gotify.Gotify(base_url=url, app_token=app_token) as gotify_connection:
gotify_connection.create_message(message=message, title=title)
if not result.returncode:
if not return_code:
# only retry on failure
break
attempt += 1
sys.exit(result.returncode)
sys.exit(return_code)
# %% main