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.
143 lines
3.8 KiB
JSON
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."
|
|
}
|
|
}
|
|
]
|
|
}
|