Adds a GitHub Action to validate RSIs (#3587)
* Validate RSIs * Fix the JSON * Example invalid RSI * Revert "Example invalid RSI" This reverts commit 1905bc9d2c275818db88cd8b643e2646f70b68a1. * Fixes an invalid identifier to show that it works on valid RSIs * Update .github/workflows/validate-rsis.yml
This commit is contained in:
183
.github/rsi-schema.json
vendored
Normal file
183
.github/rsi-schema.json
vendored
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
{
|
||||||
|
"$schema":"http://json-schema.org/draft-07/schema",
|
||||||
|
"default":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"description":"JSON Schema for SS14 RSI validation.",
|
||||||
|
"examples":[
|
||||||
|
{
|
||||||
|
"version":1,
|
||||||
|
"license":"CC-BY-SA-3.0",
|
||||||
|
"copyright":"Taken from CODEBASE at COMMIT LINK",
|
||||||
|
"size":{
|
||||||
|
"x":32,
|
||||||
|
"y":32
|
||||||
|
},
|
||||||
|
"states":[
|
||||||
|
{
|
||||||
|
"name":"basic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"basic-directions",
|
||||||
|
"directions":4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"basic-delays",
|
||||||
|
"delays":[
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"basic-delays-directions",
|
||||||
|
"directions":4,
|
||||||
|
"delays":[
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"required":[
|
||||||
|
"version",
|
||||||
|
"license",
|
||||||
|
"copyright",
|
||||||
|
"size",
|
||||||
|
"states"
|
||||||
|
],
|
||||||
|
"title":"RSI Schema",
|
||||||
|
"type":"object",
|
||||||
|
"properties":{
|
||||||
|
"version":{
|
||||||
|
"$id":"#/properties/version",
|
||||||
|
"default":"",
|
||||||
|
"description":"RSI version integer.",
|
||||||
|
"title":"The version schema",
|
||||||
|
"type":"integer"
|
||||||
|
},
|
||||||
|
"license":{
|
||||||
|
"$id":"#/properties/license",
|
||||||
|
"default":"",
|
||||||
|
"description":"The license for the associated icon states. Restricted to SS14-compatible asset licenses.",
|
||||||
|
"enum":[
|
||||||
|
"CC-BY-SA-3.0",
|
||||||
|
"CC-BY-SA-4.0",
|
||||||
|
"CC-BY-NC-SA-3.0",
|
||||||
|
"CC-BY-NC-SA-4.0",
|
||||||
|
"CC0-1.0"
|
||||||
|
],
|
||||||
|
"examples":[
|
||||||
|
"CC-BY-SA-3.0"
|
||||||
|
],
|
||||||
|
"title":"License",
|
||||||
|
"type":"string"
|
||||||
|
},
|
||||||
|
"copyright":{
|
||||||
|
"$id":"#/properties/copyright",
|
||||||
|
"type":"string",
|
||||||
|
"title":"Copyright Info",
|
||||||
|
"description":"The copyright holder. This is typically a link to the commit of the codebase that the icon is pulled from.",
|
||||||
|
"default":"",
|
||||||
|
"examples":[
|
||||||
|
"Taken from CODEBASE at COMMIT LINK"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"size":{
|
||||||
|
"$id":"#/properties/size",
|
||||||
|
"default":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"description":"The dimensions of the sprites inside the RSI. This is not the size of the PNG files that store the sprite sheet.",
|
||||||
|
"examples":[
|
||||||
|
{
|
||||||
|
"x":32,
|
||||||
|
"y":32
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title":"Sprite Dimensions",
|
||||||
|
"required":[
|
||||||
|
"x",
|
||||||
|
"y"
|
||||||
|
],
|
||||||
|
"type":"object",
|
||||||
|
"properties":{
|
||||||
|
"x":{
|
||||||
|
"$id":"#/properties/size/properties/x",
|
||||||
|
"type":"integer",
|
||||||
|
"default":32,
|
||||||
|
"examples":[
|
||||||
|
32
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"y":{
|
||||||
|
"$id":"#/properties/size/properties/y",
|
||||||
|
"type":"integer",
|
||||||
|
"default":32,
|
||||||
|
"examples":[
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties":true
|
||||||
|
},
|
||||||
|
"states":{
|
||||||
|
"$id":"#/properties/states",
|
||||||
|
"type":"array",
|
||||||
|
"title":"Icon States",
|
||||||
|
"description":"Metadata for icon states. Includes name, directions, delays, etc.",
|
||||||
|
"default":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"examples":[
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name":"basic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"basic-directions",
|
||||||
|
"directions":4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"additionalItems":true,
|
||||||
|
"items":{
|
||||||
|
"$id":"#/properties/states/items",
|
||||||
|
"type":"object",
|
||||||
|
"required":[
|
||||||
|
"name"
|
||||||
|
],
|
||||||
|
"properties":{
|
||||||
|
"name":{
|
||||||
|
"type":"string"
|
||||||
|
},
|
||||||
|
"directions":{
|
||||||
|
"type":"integer",
|
||||||
|
"enum":[
|
||||||
|
1,
|
||||||
|
4,
|
||||||
|
8
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties":true
|
||||||
|
}
|
||||||
15
.github/workflows/validate-rsis.yml
vendored
Normal file
15
.github/workflows/validate-rsis.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
name: RSI Validator
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
validate_rsis:
|
||||||
|
name: Validate RSIs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Parse files
|
||||||
|
uses: snapcart/json-schema-validator@v1.0.0
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
json_schema: .github/rsi-schema.json
|
||||||
|
json_path_pattern: .*meta.json$
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"license": "CC BY-SA 3.0",
|
"license": "CC-BY-SA-3.0",
|
||||||
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/77608a9f46b06a46f0f6b1be061755f68cc255a3",
|
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/77608a9f46b06a46f0f6b1be061755f68cc255a3",
|
||||||
"size": {
|
"size": {
|
||||||
"x": 32,
|
"x": 32,
|
||||||
|
|||||||
Reference in New Issue
Block a user