All checks were successful
Block internal-flavored paths / Block forbidden paths (push) Successful in 9s
Harness Replays / detect-changes (push) Successful in 9s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (push) Successful in 9s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 7s
Harness Replays / Harness Replays (push) Successful in 3s
CI / Detect changes (push) Successful in 21s
E2E API Smoke Test / detect-changes (push) Successful in 23s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 22s
Handlers Postgres Integration / detect-changes (push) Successful in 22s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 17s
CI / Platform (Go) (push) Successful in 3s
CI / Shellcheck (E2E scripts) (push) Successful in 3s
CI / Canvas (Next.js) (push) Successful in 4s
CI / Python Lint & Test (push) Successful in 4s
CI / Canvas Deploy Reminder (push) Has been skipped
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 5s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Successful in 4s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 3s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 3s
Co-authored-by: Molecule AI Core-DevOps <core-devops@agents.moleculesai.app> Co-committed-by: Molecule AI Core-DevOps <core-devops@agents.moleculesai.app>
41 lines
994 B
Python
Executable File
41 lines
994 B
Python
Executable File
#!/usr/bin/env python3
|
|
"""Extract changed-file list from Gitea Compare API JSON response.
|
|
|
|
Gitea Compare API returns changed files nested inside commits, not at the
|
|
top level:
|
|
{"commits": [{"files": [{"filename": "path/to/file"}]}]}
|
|
|
|
Usage:
|
|
compare-api-diff-files.py < API_RESPONSE.json
|
|
|
|
Exits 0 with filenames on stdout, one per line.
|
|
Exits 1 on malformed input (caller should handle as "no files").
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
import json
|
|
|
|
|
|
def main() -> None:
|
|
try:
|
|
data = json.load(sys.stdin)
|
|
except Exception:
|
|
sys.exit(1)
|
|
|
|
filenames: list[str] = []
|
|
for commit in data.get("commits", []):
|
|
for f in commit.get("files", []):
|
|
fn = f.get("filename", "")
|
|
if fn:
|
|
filenames.append(fn)
|
|
|
|
if filenames:
|
|
sys.stdout.write("\n".join(filenames))
|
|
sys.stdout.write("\n")
|
|
# else: empty stdout = no files, caller treats as empty list
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|