ut-tools
Version:
Build and Release management automation package.
208 lines (207 loc) • 7.69 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "@stoplight/spectral-core/meta/ruleset.schema",
"type": "object",
"additionalProperties": false,
"properties": {
"documentationUrl": {
"type": "string",
"format": "url",
"errorMessage": "must be a valid URL"
},
"description": {
"type": "string"
},
"rules": {
"type": "object",
"additionalProperties": {
"$ref": "rule.schema#"
}
},
"functions": {
"$ref": "extensions#functions"
},
"functionsDir": {
"$ref": "extensions#functionsDir"
},
"formats": {
"$ref": "shared#formats"
},
"extends": {
"$ref": "extensions#extends"
},
"parserOptions": {
"type": "object",
"properties": {
"duplicateKeys": {
"$ref": "shared#severity"
},
"incompatibleValues": {
"$ref": "shared#severity"
}
},
"additionalProperties": false
},
"overrides": {
"type": "array",
"minItems": 1,
"items": {
"if": {
"type": "object",
"properties": {
"files": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1,
"pattern": "^[^#]+#"
},
"errorMessage": "must be an non-empty array of glob patterns"
}
},
"required": ["files"]
},
"then": {
"type": "object",
"properties": {
"files": true,
"rules": {
"type": "object",
"additionalProperties": {
"$ref": "shared#severity"
},
"errorMessage": {
"enum": "must be a valid severity level"
}
}
},
"required": ["rules"],
"additionalProperties": false,
"errorMessage": {
"required": "must contain rules when JSON Pointers are defined",
"additionalProperties": "must not override any other property than rules when JSON Pointers are defined"
}
},
"else": {
"allOf": [
{
"type": "object",
"properties": {
"files": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"pattern": "[^#]",
"minLength": 1
},
"errorMessage": "must be an non-empty array of glob patterns"
}
},
"required": ["files"],
"errorMessage": {
"type": "must be an override, i.e. { \"files\": [\"v2/**/*.json\"], \"rules\": {} }"
}
},
{
"type": "object",
"properties": {
"formats": {
"$ref": "shared#formats"
},
"extends": {
"$ref": "#/properties/extends"
},
"rules": {
"$ref": "#/properties/rules"
},
"parserOptions": {
"$ref": "#/properties/parserOptions"
},
"aliases": {
"$ref": "#/properties/aliases"
}
},
"anyOf": [
{
"required": ["extends"]
},
{
"required": ["rules"]
}
]
}
]
}
},
"errorMessage": {
"minItems": "must not be empty"
}
},
"aliases": {
"type": "object",
"propertyNames": {
"pattern": "^[A-Za-z][A-Za-z0-9_-]*$",
"errorMessage": {
"pattern": "to avoid confusion the name must match /^[A-Za-z][A-Za-z0-9_-]*$/ regular expression",
"minLength": "the name of an alias must not be empty"
}
},
"additionalProperties": {
"if": {
"type": "object"
},
"then": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"targets": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"formats": {
"$ref": "shared#formats"
},
"given": {
"$ref": "shared#arrayish-given"
}
},
"required": ["formats", "given"],
"errorMessage": "a valid target must contain given and non-empty formats"
},
"errorMessage": {
"minItems": "targets must have at least a single alias definition"
}
}
},
"required": ["targets"],
"errorMessage": {
"required": "targets must be present and have at least a single alias definition"
}
},
"else": {
"$ref": "shared#arrayish-given"
}
}
}
},
"patternProperties": {
"^x-": true
},
"anyOf": [
{
"required": ["extends"]
},
{
"required": ["rules"]
},
{
"required": ["overrides"]
}
]
}