Skip to content

Commit cf22ce2

Browse files
committed
Update IntelliJ plugin to v1.4.0 and add CI/CD build pipeline
Sync TextMate grammar with runtime: add 47 missing action verb aliases, raw string literals, numeric underscores, pipeline operator, missing prepositions (at/via/by), and Conflict status code. Update spell-check dictionary. Extend IDE compatibility to 2025.2. Add manually-triggered GitLab CI child pipeline for building the plugin ZIP artifact and optionally publishing to JetBrains Marketplace.
1 parent a82fe71 commit cf22ce2

7 files changed

Lines changed: 284 additions & 126 deletions

File tree

.gitlab-ci.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ stages:
1111
- documentation
1212
- release
1313
- mastodon
14+
- plugins
1415

1516
variables:
1617
SWIFT_VERSION: '6.2.3'
@@ -566,3 +567,16 @@ post:mastodon:
566567
- node post-to-mastodon.js
567568
tags:
568569
- spencer
570+
571+
# =============================================================================
572+
# Plugins Stage - IntelliJ Plugin Build & Publish (manual trigger only)
573+
# =============================================================================
574+
intellij-plugin:
575+
stage: plugins
576+
trigger:
577+
include: .gitlab/intellij-plugin.gitlab-ci.yml
578+
strategy: depend
579+
rules:
580+
- if: $CI_PIPELINE_SOURCE == "web"
581+
when: manual
582+
allow_failure: true
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# =============================================================================
2+
# ARO IntelliJ Plugin - Build & Publish Pipeline
3+
# =============================================================================
4+
# Manually triggered pipeline to build the IntelliJ plugin JAR and optionally
5+
# publish to the JetBrains Marketplace.
6+
#
7+
# Usage:
8+
# - Go to CI/CD > Pipelines > Run Pipeline
9+
# - Set PUBLISH_TO_MARKETPLACE=true to publish (requires secrets)
10+
#
11+
# Required CI/CD variables for publishing:
12+
# - JETBRAINS_CERTIFICATE_CHAIN Plugin signing certificate chain
13+
# - JETBRAINS_PRIVATE_KEY Plugin signing private key
14+
# - JETBRAINS_PRIVATE_KEY_PASSWORD Private key password
15+
# - JETBRAINS_PUBLISH_TOKEN JetBrains Marketplace upload token
16+
# =============================================================================
17+
18+
stages:
19+
- build
20+
- publish
21+
22+
variables:
23+
PUBLISH_TO_MARKETPLACE:
24+
value: "false"
25+
description: "Set to 'true' to publish the plugin to JetBrains Marketplace"
26+
27+
workflow:
28+
rules:
29+
- if: $CI_PIPELINE_SOURCE == "web"
30+
- if: $CI_PIPELINE_SOURCE == "api"
31+
- if: $CI_PIPELINE_SOURCE == "trigger"
32+
33+
default:
34+
interruptible: true
35+
36+
# =============================================================================
37+
# Build Stage - Build the IntelliJ plugin JAR
38+
# =============================================================================
39+
build:plugin:
40+
stage: build
41+
image: eclipse-temurin:21-jdk-jammy
42+
script:
43+
- cd Editor/intellij-aro
44+
45+
# Make Gradle wrapper executable
46+
- chmod +x gradlew
47+
48+
# Run tests
49+
- ./gradlew test
50+
51+
# Build the plugin distribution ZIP
52+
- ./gradlew buildPlugin
53+
54+
# Copy artifacts to a known location
55+
- mkdir -p ../../intellij-plugin-dist
56+
- cp build/distributions/*.zip ../../intellij-plugin-dist/
57+
artifacts:
58+
name: aro-intellij-plugin-${CI_COMMIT_SHORT_SHA}
59+
paths:
60+
- intellij-plugin-dist/
61+
expire_in: 90 days
62+
tags:
63+
- spencer
64+
65+
# =============================================================================
66+
# Publish Stage - Sign and publish to JetBrains Marketplace
67+
# =============================================================================
68+
publish:plugin:
69+
stage: publish
70+
image: eclipse-temurin:21-jdk-jammy
71+
needs:
72+
- job: build:plugin
73+
artifacts: true
74+
rules:
75+
- if: $PUBLISH_TO_MARKETPLACE == "true"
76+
script:
77+
- cd Editor/intellij-aro
78+
- chmod +x gradlew
79+
80+
# Sign the plugin
81+
- ./gradlew signPlugin
82+
83+
# Publish to JetBrains Marketplace
84+
- ./gradlew publishPlugin
85+
environment:
86+
name: jetbrains-marketplace
87+
url: https://plugins.jetbrains.com/plugin/com.arolang.aro
88+
variables:
89+
CERTIFICATE_CHAIN: $JETBRAINS_CERTIFICATE_CHAIN
90+
PRIVATE_KEY: $JETBRAINS_PRIVATE_KEY
91+
PRIVATE_KEY_PASSWORD: $JETBRAINS_PRIVATE_KEY_PASSWORD
92+
PUBLISH_TOKEN: $JETBRAINS_PUBLISH_TOKEN
93+
tags:
94+
- spencer

Editor/intellij-aro/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
}
55

66
group = "com.arolang"
7-
version = "1.3.0"
7+
version = "1.4.0"
88

99
repositories {
1010
mavenCentral()
@@ -40,7 +40,7 @@ intellijPlatform {
4040
name = "ARO Language Support"
4141
ideaVersion {
4242
sinceBuild = "243"
43-
untilBuild = "251.*"
43+
untilBuild = "252.*"
4444
}
4545
}
4646

Editor/intellij-aro/src/main/resources/META-INF/plugin.xml

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<idea-plugin>
22
<id>com.arolang.aro</id>
33
<name>ARO Language</name>
4-
<version>1.3.0</version>
4+
<version>1.4.0</version>
55
<vendor email="team@arolang.org" url="https://arolang.github.io/aro/">ARO Team</vendor>
66

77
<description><![CDATA[
@@ -32,6 +32,19 @@
3232
]]></description>
3333

3434
<change-notes><![CDATA[
35+
<h3>1.4.0</h3>
36+
<ul>
37+
<li>Added 47 missing action verb aliases (Get, Find, Load, Calculate, Derive, Build, Run, Save, etc.)</li>
38+
<li>Added raw string literal highlighting (single-quoted strings)</li>
39+
<li>Added numeric underscore separator support (1_000_000)</li>
40+
<li>Added pipeline operator (|&gt;) highlighting</li>
41+
<li>Added missing prepositions: at, via, by</li>
42+
<li>Added Conflict status code (HTTP 409)</li>
43+
<li>Updated spell-check dictionary with all new terms</li>
44+
<li>Synced root and bundle TextMate grammars</li>
45+
<li>Extended IDE compatibility to IntelliJ 2025.2 (build 252)</li>
46+
</ul>
47+
3548
<h3>1.3.0</h3>
3649
<ul>
3750
<li>Added missing actions: Schedule, Sleep, Repaint, Show</li>
@@ -69,7 +82,7 @@
6982
</ul>
7083
]]></change-notes>
7184

72-
<idea-version since-build="243" until-build="251.*"/>
85+
<idea-version since-build="243" until-build="252.*"/>
7386

7487
<depends>com.intellij.modules.platform</depends>
7588
<depends>org.jetbrains.plugins.textmate</depends>

Editor/intellij-aro/src/main/resources/dictionaries/aro.dic

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ keepalive
66
websocket
77
http
88
https
9-
statuspost
109
openapi
1110
datetime
1211
localhost
1312
prepositions
13+
pipeline
1414

1515
Extract
1616
Parse
@@ -26,6 +26,14 @@ Exists
2626
Parameters
2727
Prompt
2828
Select
29+
Get
30+
Find
31+
Load
32+
Stream
33+
Subscribe
34+
Ask
35+
Choose
36+
Http
2937

3038
Compute
3139
Validate
@@ -48,12 +56,45 @@ Append
4856
Execute
4957
Call
5058
ParseHtml
59+
ParseLinkHeader
5160
Clear
5261
Render
62+
Schedule
63+
Sleep
64+
Repaint
65+
Show
66+
Calculate
67+
Derive
68+
Verify
69+
Check
70+
Build
71+
Construct
72+
Convert
73+
Modify
74+
Change
75+
Order
76+
Arrange
77+
Combine
78+
Remove
79+
Destroy
80+
Run
81+
Shell
82+
Exec
83+
Invoke
84+
Delay
85+
Pause
86+
Patch
87+
Join
88+
Aggregate
89+
Include
90+
Embed
91+
Insert
5392

5493
Return
5594
Throw
56-
Broadcast
95+
Respond
96+
Raise
97+
Fail
5798

5899
Publish
59100
Store
@@ -63,6 +104,17 @@ Emit
63104
Write
64105
Notify
65106
CreateDirectory
107+
Print
108+
Output
109+
Debug
110+
Save
111+
Persist
112+
Alert
113+
Signal
114+
Dispatch
115+
Export
116+
Expose
117+
Share
66118

67119
Start
68120
Stop
@@ -74,6 +126,14 @@ Disconnect
74126
Make
75127
Watch
76128
Configure
129+
Broadcast
130+
Await
131+
Block
132+
Wait
133+
Terminate
134+
Touch
135+
Mkdir
136+
Rename
77137

78138
Given
79139
When
@@ -84,3 +144,4 @@ pathParameters
84144
queryParameters
85145
requestBody
86146
responseBody
147+
statuspost

Editor/intellij-aro/src/main/resources/textmate/aro-bundle/syntaxes/aro.tmLanguage.json

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,39 +45,39 @@
4545
"patterns": [
4646
{
4747
"name": "entity.name.tag.aro",
48-
"match": "\\b(Extract|Parse|Retrieve|Fetch|Read|Receive|Request|Accept|List|Stat|Exists|Parameters|Prompt|Select)\\b"
48+
"match": "\\b(Extract|Parse|Retrieve|Fetch|Read|Receive|Request|Accept|List|Stat|Exists|Parameters|Prompt|Select|Get|Find|Load|Stream|Subscribe|Ask|Choose|Http)\\b"
4949
}
5050
]
5151
},
5252
"own-actions": {
5353
"patterns": [
5454
{
5555
"name": "storage.type.aro",
56-
"match": "\\b(Compute|Validate|Compare|Create|Transform|Update|Sort|Filter|Match|Split|Map|Reduce|Set|Merge|Delete|Copy|Move|Append|Execute|Call|ParseHtml|Accept|Clear|Render|Schedule|Sleep|Repaint|Show)\\b"
56+
"match": "\\b(Compute|Validate|Compare|Create|Transform|Update|Sort|Filter|Match|Split|Map|Reduce|Set|Merge|Delete|Copy|Move|Append|Execute|Call|ParseHtml|ParseLinkHeader|Accept|Clear|Render|Schedule|Sleep|Repaint|Show|Calculate|Derive|Verify|Check|Build|Construct|Convert|Modify|Change|Order|Arrange|Combine|Remove|Destroy|Run|Shell|Exec|Invoke|Delay|Pause|Patch|Join|Aggregate|Include|Embed|Insert)\\b"
5757
}
5858
]
5959
},
6060
"response-actions": {
6161
"patterns": [
6262
{
6363
"name": "constant.language.aro",
64-
"match": "\\b(Return|Throw)\\b"
64+
"match": "\\b(Return|Throw|Respond|Raise|Fail)\\b"
6565
}
6666
]
6767
},
6868
"export-actions": {
6969
"patterns": [
7070
{
7171
"name": "entity.other.attribute-name.aro",
72-
"match": "\\b(Publish|Store|Log|Send|Emit|Write|Notify|CreateDirectory)\\b"
72+
"match": "\\b(Publish|Store|Log|Send|Emit|Write|Notify|CreateDirectory|Print|Output|Debug|Save|Persist|Alert|Signal|Dispatch|Export|Expose|Share)\\b"
7373
}
7474
]
7575
},
7676
"lifecycle-actions": {
7777
"patterns": [
7878
{
7979
"name": "support.function.aro",
80-
"match": "\\b(Start|Stop|Keepalive|Listen|Connect|Close|Disconnect|Make|Watch|Configure|Broadcast)\\b"
80+
"match": "\\b(Start|Stop|Keepalive|Listen|Connect|Close|Disconnect|Make|Watch|Configure|Broadcast|Await|Block|Wait|Terminate|Touch|Mkdir|Rename)\\b"
8181
}
8282
]
8383
},
@@ -101,15 +101,15 @@
101101
"patterns": [
102102
{
103103
"name": "support.constant.aro",
104-
"match": "<(?:OK|Created|Accepted|NoContent|BadRequest|Unauthorized|Forbidden|NotFound|Error|InternalError):\\s*status>"
104+
"match": "<(?:OK|Created|Accepted|NoContent|BadRequest|Unauthorized|Forbidden|NotFound|Conflict|Error|InternalError):\\s*status>"
105105
}
106106
]
107107
},
108108
"prepositions": {
109109
"patterns": [
110110
{
111111
"name": "keyword.other.aro",
112-
"match": "\\b(?:from|to|with|for|into|on|where|against|as)\\b"
112+
"match": "\\b(?:from|to|with|for|into|on|where|against|as|at|via|by)\\b"
113113
}
114114
]
115115
},
@@ -141,22 +141,33 @@
141141
"match": "\\\\."
142142
}
143143
]
144+
},
145+
{
146+
"name": "string.quoted.single.aro",
147+
"begin": "'",
148+
"end": "'",
149+
"patterns": [
150+
{
151+
"name": "constant.character.escape.aro",
152+
"match": "\\\\'"
153+
}
154+
]
144155
}
145156
]
146157
},
147158
"numbers": {
148159
"patterns": [
149160
{
150161
"name": "constant.numeric.aro",
151-
"match": "\\b[0-9]+(?:\\.[0-9]+)?\\b"
162+
"match": "\\b[0-9][0-9_]*(?:\\.[0-9][0-9_]*)?\\b"
152163
}
153164
]
154165
},
155166
"operators": {
156167
"patterns": [
157168
{
158169
"name": "keyword.operator.aro",
159-
"match": "==|!=|<=|>=|\\+\\+|[+\\-*/%]|\\b(?:and|or|not)\\b"
170+
"match": "\\|>|==|!=|<=|>=|\\+\\+|[+\\-*/%]|\\b(?:and|or|not)\\b"
160171
},
161172
{
162173
"name": "keyword.operator.assignment.aro",

0 commit comments

Comments
 (0)