yml: Move json schema from python dict to standalone json file

- Easier to reference as schema for IDEs
- Can be added to schemastore.org

Signed-off-by: ciarancourtney <ciaran.courtney@activeenergy.ie>
[Jan: rebased, merged in schema installation]
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
ciarancourtney 2021-10-04 18:41:37 +02:00 committed by Jan Kiszka
parent 6630780935
commit 460699685e
3 changed files with 232 additions and 207 deletions

View File

@ -26,210 +26,10 @@
__license__ = 'MIT'
__copyright__ = 'Copyright (c) Siemens AG, 2017-2018'
CONFIGSCHEMA = {
'type': 'object',
'required': ['header'],
'additionalProperties': False,
'properties': {
'header': {
'type': 'object',
'required': ['version'],
'additionalProperties': False,
'properties': {
'version': {
'oneOf': [
{
'type': 'string',
'enum': ['0.10'],
},
{
'type': 'integer',
},
],
},
'includes': {
'type': 'array',
'items': {
'oneOf': [
{
'type': 'string',
},
{
'type': 'object',
'required': ['repo', 'file'],
'additionalProperties': False,
'properties': {
'repo': {
'type': 'string',
},
'file': {
'type': 'string'
},
},
},
],
},
},
},
},
'build_system': {
'type': 'string',
'enum': ['openembedded', 'oe', 'isar'],
},
'defaults': {
'type': 'object',
'additionalProperties': False,
'properties': {
'repos': {
'type': 'object',
'additionalProperties': False,
'properties': {
'refspec': {
'type': 'string',
},
'patches': {
'type': 'object',
'additionalProperties': False,
'properties': {
'repo': {
'type': 'string',
},
},
},
},
},
},
},
'machine': {
'type': 'string',
},
'distro': {
'type': 'string',
},
'env': {
'type': 'object',
'additionalProperties': {
'type': 'string',
},
},
'target': {
'oneOf': [
{
'type': 'string',
},
{
'type': 'array',
'items': {
'type': 'string',
},
},
],
},
'task': {
'type': 'string',
},
'repos': {
'type': 'object',
'additionalProperties': {
'oneOf': [
{
'type': 'object',
'additionalProperties': False,
'properties': {
'name': {
'type': 'string',
},
'url': {
'type': 'string',
},
'type': {
'type': 'string',
},
'refspec': {
'type': 'string',
},
'path': {
'type': 'string',
},
'layers': {
'type': 'object',
'additionalProperties': {
'oneOf': [
{
'type': 'null',
},
{
'type': 'integer',
},
{
'type': 'boolean',
},
{
'type': 'string',
},
],
},
},
'patches': {
'type': 'object',
'additionalProperties': {
'oneOf': [
{
'type': 'object',
'additionalProperties': False,
'required': ['path'],
'properties': {
'repo': {
'type': 'string'
},
'path': {
'type': 'string'
},
},
},
{
'type': 'null'
},
],
},
},
},
},
{
'type': 'null',
},
],
},
},
'bblayers_conf_header': {
'type': 'object',
'additionalProperties': {
'type': 'string',
},
},
'local_conf_header': {
'type': 'object',
'additionalProperties': {
'type': 'string',
},
},
'proxy_config': {
'type': 'object',
'additionalProperties': False,
'properties': {
'http_proxy': {
'type': 'string',
},
'https_proxy': {
'type': 'string',
},
'ftp_proxy': {
'type': 'string',
},
'no_proxy': {
'type': 'string',
},
},
},
},
}
import json
import os
cwd = os.path.dirname(os.path.realpath(__file__))
with open(os.path.join(cwd, 'schema-kas.json'), 'r') as f:
CONFIGSCHEMA = json.load(f)

222
kas/schema-kas.json Normal file
View File

@ -0,0 +1,222 @@
{
"type": "object",
"required": [
"header"
],
"additionalProperties": false,
"properties": {
"header": {
"type": "object",
"required": [
"version"
],
"additionalProperties": false,
"properties": {
"version": {
"oneOf": [
{
"type": "string",
"enum": [
"0.10"
]
},
{
"type": "integer"
}
]
},
"includes": {
"type": "array",
"items": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"required": [
"repo",
"file"
],
"additionalProperties": false,
"properties": {
"repo": {
"type": "string"
},
"file": {
"type": "string"
}
}
}
]
}
}
}
},
"build_system": {
"type": "string",
"enum": [
"openembedded",
"oe",
"isar"
]
},
"defaults": {
"type": "object",
"additionalProperties": false,
"properties": {
"repos": {
"type": "object",
"additionalProperties": false,
"properties": {
"refspec": {
"type": "string"
},
"patches": {
"type": "object",
"additionalProperties": false,
"properties": {
"repo": {
"type": "string"
}
}
}
}
}
}
},
"machine": {
"type": "string"
},
"distro": {
"type": "string"
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"target": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"task": {
"type": "string"
},
"repos": {
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string"
},
"type": {
"type": "string"
},
"refspec": {
"type": "string"
},
"path": {
"type": "string"
},
"layers": {
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "null"
},
{
"type": "integer"
},
{
"type": "boolean"
},
{
"type": "string"
}
]
}
},
"patches": {
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"path"
],
"properties": {
"repo": {
"type": "string"
},
"path": {
"type": "string"
}
}
},
{
"type": "null"
}
]
}
}
}
},
{
"type": "null"
}
]
}
},
"bblayers_conf_header": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"local_conf_header": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"proxy_config": {
"type": "object",
"additionalProperties": false,
"properties": {
"http_proxy": {
"type": "string"
},
"https_proxy": {
"type": "string"
},
"ftp_proxy": {
"type": "string"
},
"no_proxy": {
"type": "string"
}
}
}
}
}

View File

@ -78,6 +78,9 @@ setup(
packages=find_packages(),
package_data={'kas': ['*.json']},
include_package_data=True,
entry_points={
'console_scripts': [
'kas=kas.kas:main',