summaryrefslogtreecommitdiff
path: root/scripts/validate_courses.py
diff options
context:
space:
mode:
authorblackhao <13851610112@163.com>2025-08-22 02:51:50 -0500
committerblackhao <13851610112@163.com>2025-08-22 02:51:50 -0500
commit4aab4087dc97906d0b9890035401175cdaab32d4 (patch)
tree4e2e9d88a711ec5b1cfa02e8ac72a55183b99123 /scripts/validate_courses.py
parentafa8f50d1d21c721dabcb31ad244610946ab65a3 (diff)
2.0
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())
+
+