Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
15100bd
isl plugin for vscode v1
Nov 21, 2025
d09f2d5
improved colors
Nov 21, 2025
31e7e98
feat(plugin): Add VSCode extension package with AI assistant support
Nov 22, 2025
367d94d
feat(plugin): Add GitHub workflows for CI/CD and marketplace publishing
Nov 22, 2025
090ddc1
playground
Nov 23, 2025
8d86297
updated playground
Nov 23, 2025
35d1f44
Fix: Set executable permissions on gradlew for Railway deployment
Nov 23, 2025
1049017
changed to build and deploy together
Nov 23, 2025
c73e452
updated java version
Nov 23, 2025
49e354d
updated config
Nov 23, 2025
16134cb
railway config change
Nov 23, 2025
5c8ef87
set railway java version to 21
Nov 23, 2025
529379f
Use Dockerfile with explicit Java 21 for Railway deployment
Nov 24, 2025
bc123b2
railway config changes
Nov 24, 2025
36aae51
back go nixpack
Nov 24, 2025
be2606f
node version change
Nov 24, 2025
436958a
jdk change
Nov 24, 2025
c1e5b18
changed openjdk
Nov 24, 2025
aa098d5
more nix
Nov 24, 2025
8569fe7
docker
Nov 24, 2025
1fe9005
moved docker
Nov 24, 2025
00f5a52
docs with run button
Nov 24, 2025
a8476d2
Merge commit '5855878559158db34089034c99a5fcbd3fa7008d'
Nov 24, 2025
6041345
fixing playground
Nov 24, 2025
6241a5b
build
Nov 24, 2025
66239de
changed to js
Nov 24, 2025
7f8a400
moved js to footer
Nov 24, 2025
b2e973a
lots of code polish
Nov 24, 2025
3dac93a
improved playground
Nov 24, 2025
c02adf2
polish
Nov 24, 2025
9ba7082
moved copy button
Nov 24, 2025
02b5460
error messages polish
Nov 24, 2025
fe1652a
cleanup
Nov 24, 2025
50da5fb
more polish
Nov 24, 2025
ed0a8ca
improved default wrapper
Nov 24, 2025
f0a9fc9
Merge branch 'main' into playground
corneliutusnea Nov 24, 2025
8f3b92b
fixed unit tests
Nov 24, 2025
3e85b21
Merge branch 'playground' of https://github.com/corneliutusnea/isl in…
Nov 24, 2025
fb26c63
css
Nov 24, 2025
1eddf94
css
Nov 24, 2025
62f3361
css
Nov 24, 2025
d1fa443
added link to playground
Nov 24, 2025
6ac1829
docs improvements
Nov 24, 2025
307daaa
Merge commit '6ac18294be210d234cc7a7092b592147c216058a' into playground
Nov 24, 2025
f3d8aae
Squashed commit of the following:
Nov 25, 2025
eeb4dcf
Merge commit '307daaa61947af7cbc3345816b9be39476c77ef0' into plugin
Nov 25, 2025
1e30363
improved code actions
Nov 25, 2025
9a654c3
lots of improvements for the plugin
Nov 26, 2025
4f2f6b6
added support for custom extensions
Nov 26, 2025
c5f6efb
Fixed the build and release to Maven.
Feb 23, 2026
e9676f6
plugin improvements
Feb 23, 2026
532b549
improved plugin validations and added support for imported extensions
Feb 24, 2026
59486c1
Added improvements for ISL handling, schema validations, formatting
Feb 24, 2026
db73d7d
improved plugin to support testing
Feb 25, 2026
c8d2644
added build step for ISL runtime for the plugin
Feb 25, 2026
72f876f
improved build for plugin
Feb 25, 2026
5883e72
Squashed commit of the following:
Feb 25, 2026
40b2128
Improved testing capabilities and plugin options for testing
Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 43 additions & 16 deletions .github/PUBLISHING.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
This document explains how to publish ISL artifacts to Maven Central and GitHub Packages.

## Prerequisites
https://intuit-teams.slack.com/archives/C044PJN2NDR/p1749599979127989?thread_ts=1749145553.673049&cid=C044PJN2NDR


### 1. Maven Central (Sonatype OSSRH) Setup

Expand All @@ -16,24 +18,38 @@ To publish to Maven Central, you need:

```bash
# Generate key
gpg --gen-key
gpg --full-generate-key
# Choose RSA (option 1), key size 3072 or 4096, and set a strong passphrase

# List keys to get the key ID
gpg --list-secret-keys --keyid-format=long

# Export the ASCII-armored secret key (replace KEY_ID with your key ID)
gpg --export-secret-keys --armor KEY_ID
```

**For Windows (PowerShell):**
```powershell
# Generate key
gpg --full-generate-key

# List keys to get the key ID (last 8 characters of the fingerprint)
gpg --list-keys
# List keys
gpg --list-secret-keys --keyid-format=long

# Export the key (replace KEY_ID with your key ID)
gpg --export-secret-keys KEY_ID | base64
# Export and copy to clipboard
gpg --export-secret-keys --armor YOUR_KEY_ID | Set-Clipboard
```

**Note:** You can use the ASCII-armored key directly in the `SIGNING_KEY` secret (starts with `-----BEGIN PGP PRIVATE KEY BLOCK-----`). Base64 encoding is optional.

### 2. GitHub Repository Secrets

Configure the following secrets in your GitHub repository (Settings → Secrets and variables → Actions):

#### Maven Central Secrets:
- `OSSRH_USERNAME`: Your Sonatype JIRA username
- `OSSRH_PASSWORD`: Your Sonatype JIRA password
- `SIGNING_KEY_ID`: Your GPG key ID (last 8 characters)
- `SIGNING_KEY`: Your base64-encoded GPG private key
- `SIGNING_KEY`: Your ASCII-armored GPG private key (or base64-encoded)
- `SIGNING_PASSWORD`: Your GPG key passphrase

#### GitHub Packages:
Expand Down Expand Up @@ -68,7 +84,7 @@ Configure the following secrets in your GitHub repository (Settings → Secrets
**Manual Trigger:**
```bash
# Go to Actions → Publish to Maven Central → Run workflow
# Specify the version (e.g., 2.4.20)
# Specify the version (e.g., 1.1.2)
```

### 3. Performance Benchmarks (`benchmark.yml`)
Expand All @@ -87,8 +103,8 @@ Configure the following secrets in your GitHub repository (Settings → Secrets

1. **Create a Git tag:**
```bash
git tag -a v2.4.20 -m "Release version 2.4.20"
git push origin v2.4.20
git tag -a v1.1.0 -m "Release version 1.1.0"
git push origin v1.1.0
```

2. **Create a GitHub Release:**
Expand All @@ -105,7 +121,7 @@ Configure the following secrets in your GitHub repository (Settings → Secrets

1. **Update version in `build.gradle.kts`:**
```kotlin
version = "2.4.20" // Remove -SNAPSHOT for releases
version = "1.1.0" // Remove -SNAPSHOT for releases
```

2. **Trigger workflow manually:**
Expand All @@ -118,12 +134,12 @@ Configure the following secrets in your GitHub repository (Settings → Secrets

The project uses semantic versioning: `MAJOR.MINOR.PATCH`

- **SNAPSHOT versions** (e.g., `2.4.20-SNAPSHOT`):
- **SNAPSHOT versions** (e.g., `1.1.0-SNAPSHOT`):
- Published to Sonatype Snapshots repository
- Used for development builds
- Automatically overwritten with each publish

- **Release versions** (e.g., `2.4.20`):
- **Release versions** (e.g., `1.1.0`):
- Published to Maven Central Staging
- Requires manual promotion in Sonatype OSSRH
- Immutable once published
Expand Down Expand Up @@ -167,6 +183,17 @@ signing.secretKeyRingFile=/path/to/.gnupg/secring.gpg

## Troubleshooting

### Issue: "Could not read PGP secret key" or "checksum mismatch"
**Solution:**
1. Use the ASCII-armored format directly (recommended):
```bash
gpg --export-secret-keys --armor YOUR_KEY_ID
```
Copy the entire output (including BEGIN/END markers) into the `SIGNING_KEY` secret
2. Ensure `SIGNING_PASSWORD` matches your GPG key passphrase
3. Verify the key exports correctly before adding to GitHub secrets
4. If using base64 encoding, ensure no extra whitespace or line breaks are introduced

### Issue: "Could not find signing key"
**Solution:** Ensure GPG key is properly exported and base64 encoded. Check `SIGNING_KEY` secret.

Expand All @@ -186,14 +213,14 @@ Once published to Maven Central, users can add the dependency:
### Gradle (Kotlin DSL)
```kotlin
dependencies {
implementation("com.intuit.isl:isl-transform:2.4.20")
implementation("com.intuit.isl:isl-transform:1.1.0")
}
```

### Gradle (Groovy)
```groovy
dependencies {
implementation 'com.intuit.isl:isl-transform:2.4.20'
implementation 'com.intuit.isl:isl-transform:1.1.0'
}
```

Expand All @@ -202,7 +229,7 @@ dependencies {
<dependency>
<groupId>com.intuit.isl</groupId>
<artifactId>isl-transform</artifactId>
<version>2.4.20</version>
<version>1.1.0</version>
</dependency>
```

Expand Down
64 changes: 64 additions & 0 deletions .github/workflows/plugin-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Plugin CI

on:
push:
branches: [ main, plugin ]
paths:
- 'plugin/**'
- '.github/workflows/plugin-ci.yml'
pull_request:
branches: [ main ]
paths:
- 'plugin/**'
- '.github/workflows/plugin-ci.yml'

jobs:
build:
runs-on: ${{ matrix.os }}

strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node-version: [18.x, 20.x]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: plugin/package-lock.json

- name: Install dependencies
working-directory: plugin
run: npm ci

- name: Lint code
working-directory: plugin
run: npm run lint || echo "No lint script configured"
continue-on-error: true

- name: Compile TypeScript
working-directory: plugin
run: npm run compile

- name: Run tests
working-directory: plugin
run: npm test || echo "No tests configured"
continue-on-error: true

- name: Package extension
working-directory: plugin
run: npx vsce package

- name: Upload build artifact
if: matrix.os == 'ubuntu-latest' && matrix.node-version == '18.x'
uses: actions/upload-artifact@v4
with:
name: isl-language-support-build
path: plugin/*.vsix
retention-days: 7

106 changes: 106 additions & 0 deletions .github/workflows/publish-plugin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Publish VSCode Extension

on:
push:
tags:
- 'plugin-v*.*.*'
workflow_dispatch:
inputs:
version:
description: 'Version to publish (e.g., 1.0.0)'
required: true
islversion:
description: 'Version of ISL to include in the publish (e.g., 1.0.0)'
required: true

jobs:
publish:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Resolve ISL version
id: isl-version
run: |
if [ -n "${{ github.event.inputs.islversion }}" ]; then
echo "islVersion=${{ github.event.inputs.islversion }}" >> $GITHUB_OUTPUT
elif [[ "${{ github.ref }}" == refs/tags/plugin-v* ]]; then
ISL_VER="${GITHUB_REF#refs/tags/plugin-v}"
echo "islVersion=$ISL_VER" >> $GITHUB_OUTPUT
else
ISL_VER=$(grep "^version=" gradle.properties 2>/dev/null | cut -d'=' -f2 | tr -d '\r' || echo "1.1.0")
echo "islVersion=$ISL_VER" >> $GITHUB_OUTPUT
fi
echo "Using ISL version: $(grep islVersion $GITHUB_OUTPUT | cut -d'=' -f2)"

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'corretto'

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build ISL runtime from Maven Central
run: ./gradlew :plugin:build-isl-runtime:buildIslRuntime -PislVersion=${{ steps.isl-version.outputs.islVersion }} --no-daemon

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: plugin/package-lock.json

- name: Install dependencies
working-directory: plugin
run: npm ci

- name: Compile TypeScript
working-directory: plugin
run: npm run compile

- name: Run tests (if available)
working-directory: plugin
run: npm test || echo "No tests configured"
continue-on-error: true

- name: Package extension
working-directory: plugin
run: npx vsce package

- name: Publish to VSCode Marketplace
if: startsWith(github.ref, 'refs/tags/plugin-v')
working-directory: plugin
env:
VSCE_PAT: ${{ secrets.VSCE_TOKEN }}
run: npx vsce publish -p $VSCE_PAT

- name: Publish to Open VSX Registry
if: startsWith(github.ref, 'refs/tags/plugin-v')
working-directory: plugin
env:
OVSX_PAT: ${{ secrets.OVSX_TOKEN }}
run: npx ovsx publish -p $OVSX_PAT
continue-on-error: true

- name: Upload VSIX artifact
uses: actions/upload-artifact@v4
with:
name: isl-language-support-vsix
path: plugin/*.vsix
retention-days: 90

- name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/plugin-v')
uses: softprops/action-gh-release@v1
with:
files: plugin/*.vsix
generate_release_notes: true
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Loading
Loading