summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sherwood <paul.sherwood@codethink.co.uk>2015-05-31 09:44:11 +0000
committerPaul Sherwood <paul.sherwood@codethink.co.uk>2015-05-31 09:44:11 +0000
commita4bb64159178e9f8594a0907968c2c93fe4d8845 (patch)
treecd0ef9cc2c7b6c272f29cb964c226454c418c5e8
parent6b14ff59f2acf6d6403f014f50e4ad475a36b381 (diff)
downloaddefinitions-baserock/ps/add-relaxed-schema.tar.gz
Add an initial schema, relaxed so master is validbaserock/ps/add-relaxed-schema
Change-Id: I2144687b0aca448b73b2a14e2e43e732d1a84b86
-rw-r--r--schema/definitions-schema.json68
-rw-r--r--schema/json-schema.json150
2 files changed, 218 insertions, 0 deletions
diff --git a/schema/definitions-schema.json b/schema/definitions-schema.json
new file mode 100644
index 00000000..6afab78a
--- /dev/null
+++ b/schema/definitions-schema.json
@@ -0,0 +1,68 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "http://wiki.baserock.org/schemas/definitions#",
+
+ "definitions": {
+ "definition": {
+ "type": "object",
+ "properties": {
+ "name": { "type": "string" },
+ "morph": { "type": "string" },
+ "repo": { "type": "string" },
+ "ref": { "type": "string" },
+ "unpetrify-ref": { "anyOf": [
+ { "type": "string" },
+ { "type": "number" }
+ ] },
+ "description": { "oneOf": [
+ { "type": "string" },
+ { "type": "array", "items": { "type": "string" } }
+ ] },
+ "kind": {
+ "type": "string",
+ "enum": ["chunk", "stratum", "system", "cluster"]
+ },
+ "build-depends": {
+ "type": "array",
+ "items": { "anyOf": [
+ { "$ref": "#/definitions/definition" },
+ "morph": "string"
+ ] }
+ },
+ "chunks": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/definition" }
+ },
+ "strata": {
+ "type": "array",
+ "items": { "anyOf": [
+ { "$ref": "#/definitions/definition" },
+ "morph": "string"
+ ] }
+ },
+ "build-system": {
+ "type": "string",
+ "enum": [
+ "python-distutils",
+ "autotools",
+ "cmake",
+ "manual",
+ "cpan"
+ ]
+ },
+ "product": {
+ "artifact": { "type": "string" },
+ "include": { "type": "array", "items": "string" }
+ },
+ "dependencies": {
+ "repo": ["ref", "unpetrify-ref"],
+ "ref": ["repo", "unpetrify-ref"],
+ "unpetrify-ref": ["repo", "ref"]
+ }
+ }
+ }
+ },
+
+ "type": "object",
+ "$ref": "#/definitions/definition"
+} \ No newline at end of file
diff --git a/schema/json-schema.json b/schema/json-schema.json
new file mode 100644
index 00000000..85eb502a
--- /dev/null
+++ b/schema/json-schema.json
@@ -0,0 +1,150 @@
+{
+ "id": "http://json-schema.org/draft-04/schema#",
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "description": "Core schema meta-schema",
+ "definitions": {
+ "schemaArray": {
+ "type": "array",
+ "minItems": 1,
+ "items": { "$ref": "#" }
+ },
+ "positiveInteger": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "positiveIntegerDefault0": {
+ "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ]
+ },
+ "simpleTypes": {
+ "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ]
+ },
+ "stringArray": {
+ "type": "array",
+ "items": { "type": "string" },
+ "minItems": 1,
+ "uniqueItems": true
+ }
+ },
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "format": "uri"
+ },
+ "$schema": {
+ "type": "string",
+ "format": "uri"
+ },
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "default": {},
+ "multipleOf": {
+ "type": "number",
+ "minimum": 0,
+ "exclusiveMinimum": true
+ },
+ "maximum": {
+ "type": "number"
+ },
+ "exclusiveMaximum": {
+ "type": "boolean",
+ "default": false
+ },
+ "minimum": {
+ "type": "number"
+ },
+ "exclusiveMinimum": {
+ "type": "boolean",
+ "default": false
+ },
+ "maxLength": { "$ref": "#/definitions/positiveInteger" },
+ "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" },
+ "pattern": {
+ "type": "string",
+ "format": "regex"
+ },
+ "additionalItems": {
+ "anyOf": [
+ { "type": "boolean" },
+ { "$ref": "#" }
+ ],
+ "default": {}
+ },
+ "items": {
+ "anyOf": [
+ { "$ref": "#" },
+ { "$ref": "#/definitions/schemaArray" }
+ ],
+ "default": {}
+ },
+ "maxItems": { "$ref": "#/definitions/positiveInteger" },
+ "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" },
+ "uniqueItems": {
+ "type": "boolean",
+ "default": false
+ },
+ "maxProperties": { "$ref": "#/definitions/positiveInteger" },
+ "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" },
+ "required": { "$ref": "#/definitions/stringArray" },
+ "additionalProperties": {
+ "anyOf": [
+ { "type": "boolean" },
+ { "$ref": "#" }
+ ],
+ "default": {}
+ },
+ "definitions": {
+ "type": "object",
+ "additionalProperties": { "$ref": "#" },
+ "default": {}
+ },
+ "properties": {
+ "type": "object",
+ "additionalProperties": { "$ref": "#" },
+ "default": {}
+ },
+ "patternProperties": {
+ "type": "object",
+ "additionalProperties": { "$ref": "#" },
+ "default": {}
+ },
+ "dependencies": {
+ "type": "object",
+ "additionalProperties": {
+ "anyOf": [
+ { "$ref": "#" },
+ { "$ref": "#/definitions/stringArray" }
+ ]
+ }
+ },
+ "enum": {
+ "type": "array",
+ "minItems": 1,
+ "uniqueItems": true
+ },
+ "type": {
+ "anyOf": [
+ { "$ref": "#/definitions/simpleTypes" },
+ {
+ "type": "array",
+ "items": { "$ref": "#/definitions/simpleTypes" },
+ "minItems": 1,
+ "uniqueItems": true
+ }
+ ]
+ },
+ "allOf": { "$ref": "#/definitions/schemaArray" },
+ "anyOf": { "$ref": "#/definitions/schemaArray" },
+ "oneOf": { "$ref": "#/definitions/schemaArray" },
+ "not": { "$ref": "#" }
+ },
+ "dependencies": {
+ "exclusiveMaximum": [ "maximum" ],
+ "exclusiveMinimum": [ "minimum" ]
+ },
+ "default": {}
+}