Repository navigation
Complete the current settings view in expressions #91
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Check | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| - main | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: check-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| repository: | |
| name: Compiler, tooling, Wasm, and runtime | |
| runs-on: windows-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Check out the repository | |
| uses: actions/checkout@v7 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy, rustfmt | |
| targets: wasm32-unknown-unknown | |
| - name: Install Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| cache: npm | |
| cache-dependency-path: editors/vscode/package-lock.json | |
| - name: Install extension dependencies | |
| working-directory: editors/vscode | |
| run: npm ci | |
| - name: Install WebAssembly validation tools | |
| shell: pwsh | |
| env: | |
| WASM_TOOLS_VERSION: 1.201.0 | |
| WASM_TOOLS_SHA256: 9b80cf19d25603da8a8a0814c0d2bbfdc5b5fbd70d399c013237ed64661756a7 | |
| run: | | |
| $archive = Join-Path $env:RUNNER_TEMP "wasm-tools.zip" | |
| $destination = Join-Path $env:RUNNER_TEMP "wasm-tools" | |
| $url = "https://github.com/bytecodealliance/wasm-tools/releases/download/v$env:WASM_TOOLS_VERSION/wasm-tools-$env:WASM_TOOLS_VERSION-x86_64-windows.zip" | |
| Invoke-WebRequest -Uri $url -OutFile $archive | |
| $actualHash = (Get-FileHash -Algorithm SHA256 $archive).Hash.ToLowerInvariant() | |
| if ($actualHash -ne $env:WASM_TOOLS_SHA256) { | |
| throw "wasm-tools archive checksum mismatch: $actualHash" | |
| } | |
| Expand-Archive -Path $archive -DestinationPath $destination | |
| $binaryDirectory = Join-Path $destination "wasm-tools-$env:WASM_TOOLS_VERSION-x86_64-windows" | |
| $binaryDirectory | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| & (Join-Path $binaryDirectory "wasm-tools.exe") --version | |
| - name: Reject tracked compiler artifacts | |
| shell: pwsh | |
| run: | | |
| $artifacts = git ls-files -- '*.wasm' '*.wat' | |
| if ($artifacts) { | |
| Write-Error "Generated WebAssembly artifacts must not be tracked:`n$artifacts" | |
| } | |
| - name: Run the repository verification matrix | |
| run: cargo xtask check | |
| vscode-release: | |
| name: Publish latest VS Code extension | |
| needs: repository | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Check out the repository | |
| uses: actions/checkout@v7 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Install Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| cache: npm | |
| cache-dependency-path: editors/vscode/package-lock.json | |
| - name: Install extension dependencies | |
| working-directory: editors/vscode | |
| run: npm ci | |
| - name: Package the extension | |
| working-directory: editors/vscode | |
| run: npm run package:vsix -- --out splitscript-latest.vsix | |
| - name: Publish the latest release | |
| shell: bash | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| asset="editors/vscode/splitscript-latest.vsix" | |
| title="Latest SplitScript VS Code Extension" | |
| notes="Continuously updated from the latest verified commit on master. This early build may introduce breaking language changes." | |
| git tag --force latest "$GITHUB_SHA" | |
| git push --force origin refs/tags/latest | |
| if gh release view latest >/dev/null 2>&1; then | |
| gh release edit latest --title "$title" --notes "$notes" --latest | |
| gh release upload latest "$asset" --clobber | |
| else | |
| gh release create latest "$asset" --verify-tag --title "$title" --notes "$notes" --latest | |
| fi |