diff options
| author | blackhao <13851610112@163.com> | 2025-08-22 02:51:50 -0500 |
|---|---|---|
| committer | blackhao <13851610112@163.com> | 2025-08-22 02:51:50 -0500 |
| commit | 4aab4087dc97906d0b9890035401175cdaab32d4 (patch) | |
| tree | 4e2e9d88a711ec5b1cfa02e8ac72a55183b99123 /scripts/validate_courses.py | |
| parent | afa8f50d1d21c721dabcb31ad244610946ab65a3 (diff) | |
2.0
Diffstat (limited to 'scripts/validate_courses.py')
| -rw-r--r-- | scripts/validate_courses.py | 31 |
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()) + + |
