1
0
Fork 0

Implement schema validation for repositories

pull/6013/head
Christophe Coevoet 2016-12-29 15:39:39 +01:00
parent 37bbf1a7c9
commit 40e6d19d73
1 changed files with 123 additions and 1 deletions

View File

@ -393,7 +393,23 @@
"repositories": {
"type": ["object", "array"],
"description": "A set of additional repositories where packages can be found.",
"additionalProperties": true
"additionalProperties": {
"oneOf": [
{ "$ref": "#/definitions/repository" },
{ "type": "boolean", "enum": [false] }
]
},
"items": {
"oneOf": [
{ "$ref": "#/definitions/repository" },
{
"type": "object",
"additionalProperties": { "type": "boolean", "enum": [false] },
"minProperties": 1,
"maxProperties": 1
}
]
}
},
"minimum-stability": {
"type": ["string"],
@ -548,5 +564,111 @@
"type": ["array", "string"],
"description": "A key to store comments in"
}
},
"definitions": {
"repository": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/composer-repository" },
{ "$ref": "#/definitions/vcs-repository" },
{ "$ref": "#/definitions/path-repository" },
{ "$ref": "#/definitions/artifact-repository" },
{ "$ref": "#/definitions/pear-repository" },
{ "$ref": "#/definitions/package-repository" }
]
},
"composer-repository": {
"type": "object",
"required": ["type", "url"],
"properties": {
"type": { "type": "string", "enum": ["composer"] },
"url": { "type": "string", "format": "uri" },
"options": {
"type": "object",
"additionalProperties": true
},
"allow_ssl_downgrade": { "type": "boolean" },
"force-lazy-providers": { "type": "boolean" }
}
},
"vcs-repository": {
"type": "object",
"required": ["type", "url"],
"properties": {
"type": { "type": "string", "enum": ["vcs", "github", "git", "gitlab", "git-bitbucket", "hg", "hg-bitbucket", "fossil", "perforce", "svn"] },
"url": { "type": "string", "format": "uri" },
"no-api": { "type": "boolean" },
"secure-http": { "type": "boolean" },
"svn-cache-credentials": { "type": "boolean" },
"trunk-path": { "type": "string" },
"branches-path": { "type": "string" },
"tags-path": { "type": "string" },
"package-path": { "type": "string" },
"depot": { "type": "string" },
"branch": { "type": "string" },
"unique_perforce_client_name": { "type": "string" },
"p4user": { "type": "string" },
"p4password": { "type": "string" }
}
},
"path-repository": {
"type": "object",
"required": ["type", "url"],
"properties": {
"type": { "type": "string", "enum": ["path"] },
"url": { "type": "string" },
"options": {
"type": "object",
"properties": {
"symlink": { "type": ["boolean", "null"] }
},
"additionalProperties": true
}
}
},
"artifact-repository": {
"type": "object",
"required": ["type", "url"],
"properties": {
"type": { "type": "string", "enum": ["artifact"] },
"url": { "type": "string" }
}
},
"pear-repository": {
"type": "object",
"required": ["type", "url"],
"properties": {
"type": { "type": "string", "enum": ["pear"] },
"url": { "type": "string", "format": "uri" },
"vendor-alias": { "type": "string" }
}
},
"package-repository": {
"type": "object",
"required": ["type", "package"],
"properties": {
"type": { "type": "string", "enum": ["package"] },
"package": {
"oneOf": [
{ "$ref": "#/definitions/inline-package" },
{
"type": "array",
"items": {
"type": { "$ref": "#/definitions/inline-package" }
}
}
]
}
}
},
"inline-package": {
"type": "object",
"allOf": [
{ "$ref": "#" },
{
"required": ["name", "version"]
}
]
}
}
}