fix CI runs
This commit is contained in:
@@ -6,6 +6,7 @@ import json
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import subprocess_tee
|
||||
import sys
|
||||
import urllib.request
|
||||
from collections import Counter
|
||||
@@ -17,7 +18,7 @@ def run(*args, **kw):
|
||||
|
||||
|
||||
def nix(*args):
|
||||
return run("nix", "--extra-experimental-features", "nix-command flakes", *args, check=True, capture_output=True).stdout
|
||||
return subprocess_tee.run(("nix", "--extra-experimental-features", "nix-command flakes", "-L", *args), check=True, text=True).stdout
|
||||
|
||||
|
||||
def git(*args, check=True):
|
||||
@@ -362,10 +363,63 @@ def lint_report(args):
|
||||
|
||||
codes = [reviewdog(f"{args.dir}/{name}", flags)
|
||||
for name, flags in LINTERS
|
||||
if os.path.getsize(f"{args.dir}/{name}") > 0]
|
||||
if os.path.isfile(f"{args.dir}/{name}") and os.path.getsize(f"{args.dir}/{name}") > 0]
|
||||
sys.exit(1 if any(codes) else 0)
|
||||
|
||||
|
||||
def has_findings(path):
|
||||
return os.path.isfile(path) and os.path.getsize(path) > 0
|
||||
|
||||
|
||||
def fmt_rdjsonl(path):
|
||||
lines = []
|
||||
with open(path) as f:
|
||||
for raw in f:
|
||||
rec = json.loads(raw)
|
||||
loc = rec["location"]
|
||||
r = loc.get("range", {}).get("start")
|
||||
pos = f"{loc['path']}:{r['line']}:{r['column']}" if r else loc["path"]
|
||||
lines.append(f"- `{pos}`: {rec['message']}")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def fmt_errfmt(path):
|
||||
lines = []
|
||||
with open(path) as f:
|
||||
for raw in f:
|
||||
parts = raw.strip().split(">", 1)
|
||||
if len(parts) == 2:
|
||||
lines.append(f"- `{parts[0]}:{parts[1].split(':', 3)[-1].strip()}`" if ":" in parts[1] else f"- `{raw.strip()}`")
|
||||
elif raw.strip():
|
||||
lines.append(f"- `{raw.strip()}`")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def lint_summary(args):
|
||||
sections = []
|
||||
d = args.dir
|
||||
|
||||
if has_findings(f"{d}/nixfmt.diff"):
|
||||
with open(f"{d}/nixfmt.diff") as f:
|
||||
sections.append(f"## nixfmt\n\n```diff\n{f.read().rstrip()}\n```")
|
||||
|
||||
if has_findings(f"{d}/statix.errfmt"):
|
||||
sections.append(f"## statix\n\n{fmt_errfmt(f'{d}/statix.errfmt')}")
|
||||
|
||||
if has_findings(f"{d}/deadnix.rdjsonl"):
|
||||
sections.append(f"## deadnix\n\n{fmt_rdjsonl(f'{d}/deadnix.rdjsonl')}")
|
||||
|
||||
if has_findings(f"{d}/cycles.rdjsonl"):
|
||||
sections.append(f"## systemd ordering cycles\n\n{fmt_rdjsonl(f'{d}/cycles.rdjsonl')}")
|
||||
|
||||
if sections:
|
||||
print("\n\n".join(["# Lint findings"] + sections))
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("No lint findings.")
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
def post_comment(args):
|
||||
body = args.marker + "\n" + Path(args.body_file).read_text()
|
||||
pr = os.environ["PR"]
|
||||
@@ -438,6 +492,7 @@ def main():
|
||||
command("vulnix", vulnix, "ref", "body_out")
|
||||
command("lint", lint, "target", "out")
|
||||
command("lint-report", lint_report, "reporter", "dir")
|
||||
command("lint-summary", lint_summary, "dir")
|
||||
command("post-comment", post_comment, "marker", "body_file")
|
||||
command("upsert-issue", upsert_issue, "label", "title", "body_file")
|
||||
command("close-issue", close_issue, "label")
|
||||
|
||||
Reference in New Issue
Block a user