summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2015-07-31 11:07:40 (GMT)
committerBaserock Gerrit <gerrit@baserock.org>2015-09-18 15:49:28 (GMT)
commit666c1f019c275a65fe96246a20e5bd3fbd73a8dd (patch)
tree16d164162a2b0abd5ed1493fec50e3ed3011ebd8 /scripts
parentaeeab946dac9100be26756bfd4948f4b52df386e (diff)
downloaddefinitions-666c1f019c275a65fe96246a20e5bd3fbd73a8dd.tar.gz
Add schemas for Baserock definitions format
See schemas/README.schemas for information. Change-Id: I6c384692dbf70017a3ece2ed56c1f8cbe60b493d
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/yaml-jsonschema50
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/yaml-jsonschema b/scripts/yaml-jsonschema
new file mode 100755
index 0000000..64f52a7
--- /dev/null
+++ b/scripts/yaml-jsonschema
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# Copyright (C) 2015 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+'''A tool to validate YAML files against the JSON-Schema schemas.
+
+This wraps Python `jsonschema` module so that YAML schemas can be understood
+and YAML data can be validated.
+
+Usage: yaml-jsonschema SCHEMA INPUT1 [INPUT2, ...]
+
+'''
+
+
+import jsonschema
+import yaml
+
+import sys
+
+
+schema_file = sys.argv[1]
+input_files = sys.argv[2:]
+
+
+with open(schema_file) as f:
+ schema = yaml.load(f)
+
+
+for input_file in input_files:
+ with open(input_file) as f:
+ data = yaml.load(f)
+
+ try:
+ jsonschema.validate(data, schema)
+ print("%s: valid" % input_file)
+ except jsonschema.ValidationError as e:
+ # Print 'e' instead of 'e.message' for more information!
+ print("%s: %s" % (input_file, e.message))