1
0
Files
balatro-mod-index/schema/meta.schema.json
Gabriel Freitas eaaef217c1 version meta field is always required again
BMM won't detect updates if the version is None. Since the previous schema required version to be None when using `fixed-release-tag-updates`, that meant that manual updates via PR wouldn't be detected.
2025-07-07 12:14:35 -03:00

143 lines
3.8 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Balatro Mod Metadata",
"type": "object",
"properties": {
"title": {
"type": "string"
},
"requires-steamodded": {
"type": "boolean"
},
"requires-talisman": {
"type": "boolean"
},
"categories": {
"type": "array",
"items": {
"type": "string",
"enum": [
"Content",
"Joker",
"Quality of Life",
"Technical",
"Miscellaneous",
"Resource Packs",
"API"
]
},
"minItems": 1,
"uniqueItems": true
},
"author": {
"type": "string"
},
"repo": {
"type": "string",
"format": "uri"
},
"downloadURL": {
"type": "string",
"format": "uri"
},
"folderName": {
"type": "string",
"pattern": "^[^<>:\"/\\|?*]+$"
},
"version": {
"type": "string"
},
"automatic-version-check": {
"type": "boolean"
},
"fixed-release-tag-updates": {
"type": "boolean"
}
},
"required": [
"title",
"requires-steamodded",
"requires-talisman",
"categories",
"author",
"repo",
"downloadURL",
"version"
],
"allOf": [
{
"$comment": "This rule prevents accidental freezing of updates",
"not": {
"allOf": [
{
"$comment": "'automatic-version-check' is true",
"properties": {
"automatic-version-check": {
"const": true
}
},
"required": [
"automatic-version-check"
]
},
{
"$comment": "'downloadURL' points to a specific release asset",
"properties": {
"downloadURL": {
"pattern": "^https?://github\\.com/[^/]+/[^/]+/releases/download/[^/]+/.+$"
}
},
"required": [
"downloadURL"
]
},
{
"$comment": "'fixed-release-tag-updates' is NOT true (i.e., it's false, or it's completely missing)",
"not": {
"properties": {
"fixed-release-tag-updates": {
"const": true
}
},
"required": [
"fixed-release-tag-updates"
]
}
}
]
},
"errorMessage": "When 'downloadURL' points to a specific GitHub release asset AND 'automatic-version-check' is true, 'fixed-release-tag-updates' must also be true. This prevents accidental update freezing."
},
{
"$comment": "This rule checks the value of 'fixed-release-tag-updates' and guarantees consistency",
"if": {
"properties": {
"fixed-release-tag-updates": {
"const": true
}
},
"required": [
"fixed-release-tag-updates"
]
},
"then": {
"$comment": "Conditions when 'fixed-release-tag-updates' is true",
"properties": {
"automatic-version-check": {
"const": true,
"errorMessage": "'automatic-version-check' must be true when 'fixed-release-tag-updates' is true."
},
"downloadURL": {
"pattern": "^https?://github\\.com/[^/]+/[^/]+/releases/download/[^/]+/.+$",
"errorMessage": "When 'fixed-release-tag-updates' is true, 'downloadURL' must point to a specific GitHub specific release asset (e.g., '/releases/download/v1.0.0/asset.zip'), NOT a branch head or latest release URL."
}
},
"required": [
"automatic-version-check"
],
"errorMessage": "When 'fixed-release-tag-updates' 'automatic-version-check' must be true, and 'downloadURL' must point to a specific release asset."
}
}
]
}