Skip to content

Commit ef757e4

Browse files
committed
ci: summarize TechAPI site changes in validation comments
1 parent 0490482 commit ef757e4

1 file changed

Lines changed: 55 additions & 0 deletions

File tree

.github/workflows/techapi-pr-validation-comment.yml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,27 @@ jobs:
154154
def digest(path: Path) -> str:
155155
return hashlib.sha256(path.read_bytes()).hexdigest()
156156
157+
def rel_site_files(root: Path) -> dict[str, Path]:
158+
site = root / "site"
159+
if not site.exists():
160+
return {}
161+
wanted_files = {"site/package.json", "site/package-lock.json"}
162+
files: dict[str, Path] = {}
163+
for path in sorted(site.rglob("*")):
164+
if not path.is_file():
165+
continue
166+
rel = str(path.relative_to(root)).replace("\\", "/")
167+
if (
168+
rel.startswith("site/src/")
169+
or rel.startswith("site/public/")
170+
or rel in wanted_files
171+
or re.match(r"site/astro\.config\.[cm]?[jt]s$", rel)
172+
):
173+
if rel.startswith("site/public/v1/") or rel == "site/public/openapi.json":
174+
continue
175+
files[rel] = path
176+
return files
177+
157178
def verified_value(record: dict[str, Any]) -> bool | None:
158179
value = record.get("verified")
159180
return value if isinstance(value, bool) else None
@@ -324,6 +345,37 @@ jobs:
324345
change_lines.append("")
325346
change_lines.append("- No data file changes detected.")
326347
348+
site_lines: list[str] = []
349+
site_lines.append("## Changed site")
350+
site_lines.append("")
351+
head_site = rel_site_files(Path("TechAPI"))
352+
base_site = rel_site_files(Path("TechAPI-main"))
353+
site_added = sorted(set(head_site) - set(base_site))
354+
site_deleted = sorted(set(base_site) - set(head_site))
355+
site_modified = sorted(
356+
key for key in set(head_site) & set(base_site) if digest(head_site[key]) != digest(base_site[key])
357+
)
358+
site_lines.append("| Area | Added | Modified | Deleted |")
359+
site_lines.append("| --- | ---: | ---: | ---: |")
360+
site_lines.append(f"| homepage/site | {len(site_added)} | {len(site_modified)} | {len(site_deleted)} |")
361+
if site_added or site_modified or site_deleted:
362+
def append_site_examples(title: str, keys: list[str], limit: int = 20) -> None:
363+
if not keys:
364+
return
365+
site_lines.append("")
366+
site_lines.append(f"### {title}")
367+
for rel in keys[:limit]:
368+
site_lines.append(f"- `{rel}`")
369+
if len(keys) > limit:
370+
site_lines.append(f"- ... {len(keys) - limit} more")
371+
372+
append_site_examples("Added site files", site_added)
373+
append_site_examples("Modified site files", site_modified)
374+
append_site_examples("Deleted site files", site_deleted)
375+
else:
376+
site_lines.append("")
377+
site_lines.append("- No homepage/site file changes detected.")
378+
327379
change_lines.append("")
328380
change_lines.append("## Heuristic review")
329381
change_lines.append("")
@@ -358,6 +410,7 @@ jobs:
358410
change_lines.append("- Heuristic warnings: none found.")
359411
360412
Path("change-review.md").write_text("\n".join(change_lines) + "\n", encoding="utf-8")
413+
Path("site-change-review.md").write_text("\n".join(site_lines) + "\n", encoding="utf-8")
361414
Path("data-stats.md").write_text("\n".join(stats_lines) + "\n", encoding="utf-8")
362415
PY
363416
@@ -481,6 +534,8 @@ jobs:
481534
echo "| \`cd TechAPI/site && npm ci && npm run build\` | $([ "${{ steps.site_build.outputs.status }}" = "0" ] && echo PASS || echo FAIL) |"
482535
echo
483536
cat change-review.md
537+
echo
538+
cat site-change-review.md
484539
} > change-comment.md
485540
486541
{

0 commit comments

Comments
 (0)