Skip to content

Commit 6f2a254

Browse files
committed
fix: correct validate.yml heredoc syntax for GitHub Actions
Made-with: Cursor
1 parent f83e342 commit 6f2a254

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

.github/workflows/validate.yml

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,33 @@ jobs:
2020
run: python3 -c "import json; json.load(open('registry.json'))"
2121

2222
- name: Validate registry schema
23-
run: python3 << 'EOF'
24-
import json, sys
25-
26-
data = json.load(open("registry.json"))
27-
assert isinstance(data, list), "registry.json must be an array"
28-
29-
required = ["name", "repo", "slug", "description", "type", "skills", "rules", "mcpTools", "status"]
30-
valid_types = ["cursor-plugin", "mcp-server"]
31-
errors = []
32-
33-
for i, tool in enumerate(data):
23+
shell: bash
24+
run: |
25+
python3 << 'PYEOF'
26+
import json, sys
27+
data = json.load(open("registry.json"))
28+
assert isinstance(data, list), "registry.json must be an array"
29+
required = ["name", "repo", "slug", "description", "type", "skills", "rules", "mcpTools", "status"]
30+
valid_types = ["cursor-plugin", "mcp-server"]
31+
errors = []
32+
for i, tool in enumerate(data):
3433
for field in required:
35-
if field not in tool:
36-
errors.append(f"Entry {i} ({tool.get('name', '?')}): missing '{field}'")
34+
if field not in tool:
35+
errors.append("Entry %d (%s): missing '%s'" % (i, tool.get("name", "?"), field))
3736
if tool.get("type") not in valid_types:
38-
errors.append(f"Entry {i} ({tool.get('name', '?')}): invalid type '{tool.get('type')}'")
37+
errors.append("Entry %d (%s): invalid type '%s'" % (i, tool.get("name", "?"), tool.get("type")))
3938
if not isinstance(tool.get("skills", 0), int):
40-
errors.append(f"Entry {i} ({tool.get('name', '?')}): skills must be int")
39+
errors.append("Entry %d (%s): skills must be int" % (i, tool.get("name", "?")))
4140
if not isinstance(tool.get("rules", 0), int):
42-
errors.append(f"Entry {i} ({tool.get('name', '?')}): rules must be int")
41+
errors.append("Entry %d (%s): rules must be int" % (i, tool.get("name", "?")))
4342
if not isinstance(tool.get("mcpTools", 0), int):
44-
errors.append(f"Entry {i} ({tool.get('name', '?')}): mcpTools must be int")
45-
46-
if errors:
43+
errors.append("Entry %d (%s): mcpTools must be int" % (i, tool.get("name", "?")))
44+
if errors:
4745
for e in errors:
48-
print(f"::error::{e}", file=sys.stderr)
46+
print("::error::" + e, file=sys.stderr)
4947
sys.exit(1)
50-
51-
print(f"Registry valid: {len(data)} tools")
52-
EOF
48+
print("Registry valid: %d tools" % len(data))
49+
PYEOF
5350
5451
validate-docs:
5552
name: Validate docs site

0 commit comments

Comments
 (0)