All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
Preserving newlines is done differently when writing to $GITHUB_OUTPUT
over the deprecated :set-output: command.
import subprocess
import sys
import zipfile
import subprocess
import sys
import zipfile
+from base64 import b64encode
from io import BytesIO
from pathlib import Path
from typing import Any
from io import BytesIO
from pathlib import Path
from typing import Any
else:
print(f"[INFO]: setting '{name}' to [{len(value)} chars]")
else:
print(f"[INFO]: setting '{name}' to [{len(value)} chars]")
- # Originally the `set-output` workflow command was used here, now replaced
- # by setting variables through the `GITHUB_OUTPUT` environment variable
- # to stay up to date with GitHub's update.
if "GITHUB_OUTPUT" in os.environ:
if "GITHUB_OUTPUT" in os.environ:
+ if "\n" in value:
+ # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
+ delimiter = b64encode(os.urandom(16)).decode()
+ value = f"{delimiter}\n{value}\n{delimiter}"
+ command = f"{name}<<{value}"
+ else:
+ command = f"{name}={value}"
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
- print(f"{name}={value}", file=f)
def http_get(url: str, *, is_json: bool = True, **kwargs: Any) -> Any:
def http_get(url: str, *, is_json: bool = True, **kwargs: Any) -> Any:
# while it's still in progress seems impossible).
body = body.replace("$workflow-run-url", data["html_url"])
body = body.replace("$job-diff-url", diff_url)
# while it's still in progress seems impossible).
body = body.replace("$workflow-run-url", data["html_url"])
body = body.replace("$job-diff-url", diff_url)
- # https://github.community/t/set-output-truncates-multiline-strings/16852/3
- escaped = body.replace("%", "%25").replace("\n", "%0A").replace("\r", "%0D")
- set_output("comment-body", escaped)
+ set_output("comment-body", body)
if __name__ == "__main__":
if __name__ == "__main__":