]>
git.madduck.net Git - etc/vim.git/blobdiff - scripts/diff_shades_gha_helper.py
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
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.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
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:
@main.command("config", help="Acquire run configuration and metadata.")
@click.argument("event", type=click.Choice(["push", "pull_request"]))
def config(event: Literal["push", "pull_request"]) -> None:
@main.command("config", help="Acquire run configuration and metadata.")
@click.argument("event", type=click.Choice(["push", "pull_request"]))
def config(event: Literal["push", "pull_request"]) -> None:
+ import diff_shades # type: ignore[import]
if event == "push":
jobs = [{"mode": "preview-changes", "force-flag": "--force-preview-style"}]
if event == "push":
jobs = [{"mode": "preview-changes", "force-flag": "--force-preview-style"}]
# 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__":