From 460699685e4c8f7fa601016bd1b4feaf5b8060b8 Mon Sep 17 00:00:00 2001 From: ciarancourtney Date: Mon, 4 Oct 2021 18:41:37 +0200 Subject: [PATCH] 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 [Jan: rebased, merged in schema installation] Signed-off-by: Jan Kiszka --- kas/configschema.py | 214 ++---------------------------------------- kas/schema-kas.json | 222 ++++++++++++++++++++++++++++++++++++++++++++ setup.py | 3 + 3 files changed, 232 insertions(+), 207 deletions(-) create mode 100644 kas/schema-kas.json diff --git a/kas/configschema.py b/kas/configschema.py index b97ef42..057eead 100644 --- a/kas/configschema.py +++ b/kas/configschema.py @@ -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) diff --git a/kas/schema-kas.json b/kas/schema-kas.json new file mode 100644 index 0000000..2f3a685 --- /dev/null +++ b/kas/schema-kas.json @@ -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" + } + } + } + } +} diff --git a/setup.py b/setup.py index 4584333..f0c4fc7 100644 --- a/setup.py +++ b/setup.py @@ -78,6 +78,9 @@ setup( packages=find_packages(), + package_data={'kas': ['*.json']}, + include_package_data=True, + entry_points={ 'console_scripts': [ 'kas=kas.kas:main',