mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-01 07:33:45 -06:00
install/<platform>.json wrote the constant "1.0" as the version of the list it was built from. The manifest now carries the version the platform YAML records, and generate_pack refuses a YAML without one. inherits: no longer passes a parent's version to a child: Lakka was published as RetroArch v1.22.2 in its manifest, pack name and site page. lakka.yml records v6.1, the Lakka-LibreELEC tag its target list is read at. The MiSTer scraper refuses a BiosDB without a timestamp instead of writing an empty version. A pack's manifest.json records list_version, so an install from the pack alone knows it too. Manifests regenerated twice and compared: only version and generated changed.
60 lines
2.6 KiB
JSON
60 lines
2.6 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"] }
|
|
}
|
|
}
|
|
}
|