reporter.py 994 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import json
  2. import sys
  3. from enum import Enum
  4. from typing import Optional
  5. class LintStatus(Enum):
  6. GOOD = "GOOD"
  7. FAIL = "FAIL"
  8. SKIPPED = "SKIPPED"
  9. class LintReport():
  10. def __init__(self):
  11. self._report = {}
  12. def add(self, file_name: str, status: LintStatus, message: str = "", elapsed: float = 0.0):
  13. self._report[file_name] = {
  14. "status": status.value,
  15. "message": message,
  16. "elapsed": elapsed,
  17. }
  18. def dump(self, report_file, pretty: Optional[bool] = None):
  19. data = {
  20. "report": self._report,
  21. }
  22. if report_file == "-":
  23. if pretty is None:
  24. pretty = True
  25. self._do_dump(sys.stdout, data, pretty)
  26. else:
  27. with open(report_file, "w") as f:
  28. self._do_dump(f, data, pretty)
  29. @staticmethod
  30. def _do_dump(dest, data, pretty):
  31. indent = 4 if pretty else None
  32. json.dump(data, dest, indent=indent)