mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
Since ddafc2ff4 a pack's manifest.json holds install_list and
targets, which install.py reads with the pack alone. The pack schema
refused both. It now names them, and validate_schemas.py checks each
against the install and target manifest schemas.
68 lines
3.2 KiB
JSON
68 lines
3.2 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://abdess.github.io/retrobios/api/v1/schemas/pack-manifest.schema.json",
|
|
"title": "RetroBIOS pack integrity manifest",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["schema_version", "version", "generator", "generated", "files", "summary", "errors"],
|
|
"properties": {
|
|
"schema_version": { "const": 1 },
|
|
"version": { "const": 1 },
|
|
"generator": { "const": "retrobios generate_pack.py" },
|
|
"generated": { "type": "string", "format": "date-time" },
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["path", "sha1", "md5", "size", "status", "name"],
|
|
"properties": {
|
|
"path": { "type": "string", "minLength": 1 },
|
|
"sha1": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
|
|
"md5": { "type": "string", "pattern": "^[a-f0-9]{32}$" },
|
|
"size": { "type": "integer", "minimum": 0 },
|
|
"status": { "enum": ["verified", "verified_md5", "verified_rebuild", "verified_data", "verified_members", "untracked"] },
|
|
"name": { "type": "string" },
|
|
"systems": { "type": "array", "items": { "type": "string", "minLength": 1 } }
|
|
}
|
|
}
|
|
},
|
|
"summary": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["total_files", "verified", "untracked", "errors"],
|
|
"properties": {
|
|
"total_files": { "type": "integer", "minimum": 0 },
|
|
"verified": { "type": "integer", "minimum": 0 },
|
|
"untracked": { "type": "integer", "minimum": 0 },
|
|
"errors": { "type": "integer", "minimum": 0 }
|
|
}
|
|
},
|
|
"errors": { "type": "array", "items": { "type": "string" } },
|
|
"system_titles": { "type": "object", "additionalProperties": { "type": "string" } },
|
|
"system_names": {
|
|
"type": "object",
|
|
"additionalProperties": { "type": "array", "items": { "type": "string" } }
|
|
},
|
|
"list_version": {
|
|
"description": "Version of the platform's list the pack was built from, the version of its install manifest. The installer compares it with the version the machine runs when it installs from the pack alone. The version key above numbers this file's format.",
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"list_records": {
|
|
"description": "What the platform's install list narrows by: the installer names that list as the remedy for --core or --region given with the pack alone only when it records them.",
|
|
"type": "array",
|
|
"uniqueItems": true,
|
|
"items": { "enum": ["systems", "cores", "regions"] }
|
|
},
|
|
"install_list": {
|
|
"description": "The install manifest built with the same choices as the pack, as install/<platform>.json holds it. With the pack alone, the installer narrows by system, core and region from it. validate_schemas.py checks it against install-manifest.schema.json.",
|
|
"type": "object"
|
|
},
|
|
"targets": {
|
|
"description": "The platform's cores per hardware target, as install/targets/<platform>.json publishes them. With the pack alone, the installer applies the card's board and accepts --target from it. validate_schemas.py checks it against target-manifest.schema.json.",
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|