Skip to content

Commit 6cce4e2

Browse files
Add CI and publish github actions for VSCode ext
1 parent 0d60f83 commit 6cce4e2

File tree

5 files changed

+247
-0
lines changed

5 files changed

+247
-0
lines changed

.github/workflows/redcode-ci.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
on:
2+
push:
3+
paths:
4+
- "redcode/**"
5+
pull_request:
6+
paths:
7+
- "redcode/**"
8+
9+
defaults:
10+
run:
11+
working-directory: redcode
12+
13+
jobs:
14+
build:
15+
strategy:
16+
matrix:
17+
os: [macos-latest, ubuntu-latest, windows-latest]
18+
runs-on: ${{ matrix.os }}
19+
steps:
20+
- name: Checkout branch
21+
uses: actions/checkout@v2
22+
- name: Install Node.js
23+
uses: actions/setup-node@v1
24+
with:
25+
node-version: 10.x
26+
- name: Install dependencies
27+
run: npm install
28+
- name: Build extension
29+
run: npm run build
30+
- name: Verify the build did not modify any files
31+
run: git diff-index --quiet HEAD
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
on:
2+
release:
3+
types:
4+
- created
5+
6+
defaults:
7+
run:
8+
working-directory: redcode
9+
10+
jobs:
11+
publish:
12+
if: startsWith(github.ref, "refs/tags/redcode-")
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v2
17+
- name: Set version string
18+
id: get_name
19+
run: echo "::set-output name=PACKAGE::$(echo '${{ github.ref }}' | awk -F '[/]' '{print $3}').vsix"
20+
- name: Install Node.js
21+
uses: actions/setup-node@v1
22+
with:
23+
node-version: 10.x
24+
- name: Install dependencies
25+
run: npm install
26+
- name: Package extension
27+
run: npm run package -- --out ${{ steps.get_name.outputs.PACKAGE }}
28+
- name: Upload extension to Github
29+
uses: actions/upload-release-asset@v1
30+
env:
31+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32+
with:
33+
upload_url: ${{ github.event.upload_url }}
34+
asset_path: ./${{ steps.get_name.outputs.PACKAGE }}
35+
asset_name: ${{ steps.get_name.outputs.PACKAGE }}
36+
asset_content_type: application/vsix
37+
- name: Publish extension to VSCode marketplace
38+
run: npm run deploy
39+
env:
40+
VSCE_PAT: ${{ secrets.VSCE_PAT }}

redcode/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules
2+
*.vsix

redcode/package.json

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{
2+
"name": "redcode",
3+
"displayName": "redcode",
4+
"description": "Language per REDCODE Reference Standard: ICWS'94 draft (extended)",
5+
"version": "0.0.3",
6+
"license": "MIT",
7+
"publisher": "ian-h-chamberlain",
8+
"repository": {
9+
"type": "git",
10+
"url": "https://github.com/ian-h-chamberlain/corewa_rs.git",
11+
"directory": "redcode"
12+
},
13+
"engines": {
14+
"vscode": "^1.40.0"
15+
},
16+
"categories": [
17+
"Programming Languages"
18+
],
19+
"keywords": [
20+
"core",
21+
"war",
22+
"core war",
23+
"wars",
24+
"core wars",
25+
"redcode"
26+
],
27+
"contributes": {
28+
"languages": [
29+
{
30+
"id": "redcode",
31+
"aliases": [
32+
"Redcode",
33+
"redcode"
34+
],
35+
"extensions": [
36+
".red"
37+
],
38+
"configuration": "./language-configuration.json"
39+
}
40+
],
41+
"grammars": [
42+
{
43+
"language": "redcode",
44+
"scopeName": "source.redcode",
45+
"path": "./syntaxes/redcode.tmLanguage.json"
46+
}
47+
]
48+
},
49+
"scripts": {
50+
"build": "npx js-yaml syntaxes/redcode.tmLanguage.yaml > syntaxes/redcode.tmLanguage.json",
51+
"package": "vsce package",
52+
"deploy": "vsce publish"
53+
},
54+
"devDependencies": {
55+
"js-yaml": "^3.13.1",
56+
"vsce": "^1.71.0"
57+
}
58+
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
$schema: 'https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json'
2+
name: Redcode
3+
scopeName: source.redcode
4+
patterns:
5+
- include: '#directive'
6+
- include: '#opcode'
7+
- include: '#field'
8+
- include: '#label'
9+
10+
repository:
11+
opcode:
12+
patterns:
13+
- name: keyword.operator.control.opcode.88.redcode
14+
match: (?i)\b(DAT|MOV|ADD|SUB|JMP|JMZ|JMN|DJN|SLT|CMP|SPL)\b
15+
- name: keyword.operator.control.opcode.94.redcode
16+
match: (?i)\b(MUL|DIV|MOD|SEQ|SNE|NOP)\b
17+
- name: keyword.operator.control.opcode.p-space.redcode
18+
match: (?i)\b(LDP|STP)\b
19+
- name: keyword.operator.control.psuedo-opcode.88.redcode
20+
match: (?i)\b(EQU|END|FOR|ROF)\b
21+
- name: keyword.operator.control.psuedo-opcode.94.redcode
22+
match: (?i)\b(ORG)\b
23+
- name: keyword.operator.control.psuedo-opcode.p-space.redcode
24+
match: (?i)\b(PIN)\b
25+
26+
builtin:
27+
patterns:
28+
- name: constant.language.88.redcode
29+
match: \b(CORESIZE|MAXPROCESSES|MAXCYCLES|MAXLENGTH)\b
30+
- name: constant.language.94.redcode
31+
match: \b(MINDISTANCE|ROUNDS|CURLINE|VERSION|WARRIORS)\b
32+
- name: constant.language.p-space.redcode
33+
match: \b(PSPACESIZE)\b
34+
35+
directive:
36+
begin: '(;)'
37+
beginCaptures:
38+
'1':
39+
name: comment.line.semicolon.redcode
40+
end: '$'
41+
patterns:
42+
- include: '#directive_with_argument'
43+
- name: keyword.operator.directive.main.redcode
44+
match: (?i)(redcode)(?!-)
45+
- name: keyword.operator.directive.koth.main.redcode
46+
match: (?i)(redcode-[a-zA-Z0-9]+)
47+
- name: keyword.operator.directive.debug.redcode
48+
match: (?i)(debug)[[:blank:]]+(off|static)
49+
- name: keyword.operator.directive.trace.redcode
50+
match: (?i)(trace)[[:blank:]]+(off)
51+
- name: comment.line.semicolon.redcode
52+
match: '.*'
53+
54+
directive_with_argument:
55+
patterns:
56+
- match: (?i)(assert)\b(.*)
57+
captures:
58+
'1':
59+
name: keyword.operator.directive.redcode
60+
'2':
61+
patterns:
62+
- include: '#expression'
63+
64+
- match: (?i)(author|break|name)\b(.*)
65+
captures:
66+
'1':
67+
name: keyword.operator.directive.redcode
68+
'2':
69+
name: string.unquoted.directive.argument.redcode
70+
71+
- match: (?i)(help|kill|status|strategy|test|password|newpasswd|newredcode|url|version|date)\b(.*)
72+
name: keyword.operator.directive.koth.redcode
73+
captures:
74+
'2':
75+
name: string.unquoted.directive.koth.argument.redcode
76+
77+
label:
78+
patterns:
79+
- name: variable.redcode
80+
match: '\b([a-zA-Z_][a-zA-Z0-9_]*[:]?)\b'
81+
82+
field:
83+
patterns:
84+
- name: keyword.operator.address-mode.88.redcode
85+
match: '[#$@<]'
86+
- name: keyword.operator.address-mode.94.redcode
87+
match: '[>*{}]'
88+
- name: keyword.operator.modifier.redcode
89+
match: '(?i)\b(\.([ABFXI]|AB|BA))\b'
90+
- include: '#expression'
91+
92+
expression:
93+
name: expression
94+
patterns:
95+
- name: keyword.operator.math.redcode
96+
match: '[+\-*/%]'
97+
- name: keyword.operator.logical.redcode
98+
match: '[=<>&|!]'
99+
- name: constant.numeric.redcode
100+
match: \b\d+\b
101+
- include: '#builtin'
102+
- include: '#label'
103+
- include: '#paren_expression'
104+
105+
paren_expression:
106+
begin: '\('
107+
beginCaptures:
108+
'0':
109+
name: punctuation.paren.open.redcode
110+
end: '\)'
111+
endCaptures:
112+
'0':
113+
name: punctuation.paren.open.redcode
114+
name: expression.group
115+
patterns:
116+
- include: '#expression'

0 commit comments

Comments
 (0)