summaryrefslogtreecommitdiff
path: root/scripts/validate_courses.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/validate_courses.py')
-rw-r--r--scripts/validate_courses.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/validate_courses.py b/scripts/validate_courses.py
new file mode 100644
index 0000000..acff4cd
--- /dev/null
+++ b/scripts/validate_courses.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+import json
+import sys
+from jsonschema import Draft202012Validator
+
+
+def main() -> int:
+ if len(sys.argv) != 3:
+ print("usage: validate_courses.py <schema.json> <data.json>")
+ return 2
+
+ schema_path, data_path = sys.argv[1], sys.argv[2]
+ with open(schema_path, "r", encoding="utf-8") as f:
+ schema = json.load(f)
+ with open(data_path, "r", encoding="utf-8") as f:
+ data = json.load(f)
+
+ validator = Draft202012Validator(schema)
+ errors = list(validator.iter_errors(data[0] if isinstance(data, list) and data else data))
+ if errors:
+ for err in errors:
+ print(f"error: {err.message} at {list(err.path)}")
+ return 1
+ print("ok")
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
+
+