mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
406 lines
10 KiB
JSON
406 lines
10 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://github.com/Abdess/retrobios/schemas/install-manifest.schema.json",
|
|
"title": "RetroBIOS installer manifest",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"manifest_version",
|
|
"source",
|
|
"regions",
|
|
"platform",
|
|
"display_name",
|
|
"version",
|
|
"generated",
|
|
"base_destination",
|
|
"detect",
|
|
"standalone_copies",
|
|
"total_files",
|
|
"total_size",
|
|
"total_omitted",
|
|
"omitted_files",
|
|
"files"
|
|
],
|
|
"properties": {
|
|
"manifest_version": {
|
|
"const": 2
|
|
},
|
|
"source": {
|
|
"enum": [
|
|
"full",
|
|
"platform",
|
|
"truth"
|
|
]
|
|
},
|
|
"regions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"target": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "Hardware target this manifest was filtered for; absent when unfiltered"
|
|
},
|
|
"platform": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"display_name": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
},
|
|
"generated": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"base_destination": {
|
|
"type": "string"
|
|
},
|
|
"detect": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"standalone_copies": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"total_files": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"total_size": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"pack_files": {
|
|
"description": "Files the platform's pack holds once extracted: this list, the data directories and the pack's own documents.",
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"pack_size": {
|
|
"description": "Bytes those files occupy once extracted.",
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"total_omitted": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"omitted_files": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"dest",
|
|
"name",
|
|
"system",
|
|
"required",
|
|
"reason",
|
|
"cores"
|
|
],
|
|
"properties": {
|
|
"dest": {
|
|
"type": "string",
|
|
"pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$)).+$"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"system": {
|
|
"type": "string"
|
|
},
|
|
"required": {
|
|
"type": "boolean"
|
|
},
|
|
"reason": {
|
|
"enum": [
|
|
"hash_mismatch",
|
|
"not_found",
|
|
"external",
|
|
"user_provided",
|
|
"no_platform_slug"
|
|
]
|
|
},
|
|
"cores": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true
|
|
}
|
|
]
|
|
},
|
|
"regions": {
|
|
"description": "The regions the emulator code selects the file for. Absent when it never competes.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"argentina",
|
|
"asia",
|
|
"asia-ntsc",
|
|
"asia-pal",
|
|
"australia",
|
|
"brazil",
|
|
"canada",
|
|
"china",
|
|
"denmark",
|
|
"europe",
|
|
"finland",
|
|
"france",
|
|
"germany",
|
|
"greece",
|
|
"hong-kong",
|
|
"india",
|
|
"italy",
|
|
"japan",
|
|
"latin-america",
|
|
"mexico",
|
|
"netherlands",
|
|
"new-zealand",
|
|
"north-america",
|
|
"norway",
|
|
"oceania",
|
|
"poland",
|
|
"portugal",
|
|
"russia",
|
|
"singapore",
|
|
"south-korea",
|
|
"spain",
|
|
"sweden",
|
|
"taiwan",
|
|
"uk",
|
|
"world"
|
|
]
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": 1000,
|
|
"uniqueItems": true
|
|
},
|
|
"region_groups": {
|
|
"description": "Groups the file competes in as a core extra, whatever systems are chosen.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": 1000,
|
|
"uniqueItems": true
|
|
},
|
|
"region_system_groups": {
|
|
"description": "Groups the file competes in as the platform's own declaration: present only when that system is kept.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": 1000,
|
|
"uniqueItems": true
|
|
},
|
|
"systems": {
|
|
"description": "Every platform system that declares the file, for the installer's --system.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": 1000,
|
|
"uniqueItems": true
|
|
},
|
|
"priority": {
|
|
"description": "The rank the code searches the file at, lower first: a world file withdraws an unmatched regional one only when it ranks no worse.",
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"dest",
|
|
"sha1",
|
|
"sha256",
|
|
"size",
|
|
"repo_path",
|
|
"cores"
|
|
],
|
|
"properties": {
|
|
"dest": {
|
|
"type": "string",
|
|
"pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$)).+$"
|
|
},
|
|
"sha1": {
|
|
"type": "string",
|
|
"pattern": "^[a-f0-9]{40}$"
|
|
},
|
|
"sha256": {
|
|
"type": "string",
|
|
"pattern": "^[a-f0-9]{64}$"
|
|
},
|
|
"size": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"repo_path": {
|
|
"type": "string"
|
|
},
|
|
"cores": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true
|
|
}
|
|
]
|
|
},
|
|
"storage": {
|
|
"const": "release"
|
|
},
|
|
"release_asset": {
|
|
"type": "string",
|
|
"pattern": "^[^/\\\\]+$"
|
|
},
|
|
"systems": {
|
|
"description": "Every platform system that declares the file, for the installer's --system.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": 1000,
|
|
"uniqueItems": true
|
|
},
|
|
"regions": {
|
|
"description": "The regions the emulator code selects the file for. Absent when it never competes.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"argentina",
|
|
"asia",
|
|
"asia-ntsc",
|
|
"asia-pal",
|
|
"australia",
|
|
"brazil",
|
|
"canada",
|
|
"china",
|
|
"denmark",
|
|
"europe",
|
|
"finland",
|
|
"france",
|
|
"germany",
|
|
"greece",
|
|
"hong-kong",
|
|
"india",
|
|
"italy",
|
|
"japan",
|
|
"latin-america",
|
|
"mexico",
|
|
"netherlands",
|
|
"new-zealand",
|
|
"north-america",
|
|
"norway",
|
|
"oceania",
|
|
"poland",
|
|
"portugal",
|
|
"russia",
|
|
"singapore",
|
|
"south-korea",
|
|
"spain",
|
|
"sweden",
|
|
"taiwan",
|
|
"uk",
|
|
"world"
|
|
]
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": 1000,
|
|
"uniqueItems": true
|
|
},
|
|
"region_groups": {
|
|
"description": "Groups the file competes in as a core extra, whatever systems are chosen.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": 1000,
|
|
"uniqueItems": true
|
|
},
|
|
"region_system_groups": {
|
|
"description": "Groups the file competes in as the platform's own declaration: present only when that system is kept.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": 1000,
|
|
"uniqueItems": true
|
|
},
|
|
"priority": {
|
|
"description": "The rank the code searches the file at, lower first: a world file withdraws an unmatched regional one only when it ranks no worse.",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"oneOf": [
|
|
{
|
|
"required": [
|
|
"release_asset"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"repo_path": {
|
|
"type": "string",
|
|
"pattern": "^bios/"
|
|
}
|
|
},
|
|
"not": {
|
|
"required": [
|
|
"release_asset"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|