29 lines
880 B
Python
29 lines
880 B
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""Fail when a hadolint SARIF report contains warnings or errors."""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import json
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
|
||
|
|
def main(argv: list[str] | None = None) -> int:
|
||
|
|
args = argv if argv is not None else sys.argv[1:]
|
||
|
|
sarif_path = Path(args[0] if args else "hadolint-results.sarif")
|
||
|
|
|
||
|
|
with sarif_path.open("r", encoding="utf-8") as handle:
|
||
|
|
sarif = json.load(handle)
|
||
|
|
|
||
|
|
results = sarif.get("runs", [{}])[0].get("results", [])
|
||
|
|
levels = [result.get("level", "") for result in results]
|
||
|
|
warnings = sum(1 for level in levels if level == "warning")
|
||
|
|
errors = sum(1 for level in levels if level == "error")
|
||
|
|
|
||
|
|
print(f"SARIF results: total={len(results)} warnings={warnings} errors={errors}")
|
||
|
|
return 1 if warnings + errors > 0 else 0
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
raise SystemExit(main())
|