Package wasm with VS Code extension #53
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: CI | |
| on: | |
| push: | |
| pull_request: | |
| permissions: | |
| contents: write | |
| env: | |
| CARGO_TERM_COLOR: always | |
| CARGO_TARGET_DIR: target | |
| jobs: | |
| rust: | |
| name: Rust lint and tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: rustscript | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| targets: thumbv6m-none-eabi | |
| - name: Format check | |
| working-directory: rustscript | |
| run: cargo fmt --all -- --check | |
| - name: pd-vm-nostd RP2040 check | |
| working-directory: rustscript | |
| run: cargo check -p pd-vm-nostd --target thumbv6m-none-eabi | |
| - name: Runtime-only dependency check | |
| working-directory: rustscript | |
| run: cargo check -p pd-vm --no-default-features --features runtime | |
| - name: Clippy | |
| working-directory: rustscript | |
| run: cargo clippy --workspace --all-targets --all-features | |
| - name: Tests | |
| working-directory: rustscript | |
| run: cargo test --workspace --jobs 4 | |
| pd-vm-cli: | |
| name: pd-vm CLI (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: rustscript | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Build pd-vm CLI | |
| working-directory: rustscript | |
| run: cargo build -p pd-vm --bin pd-vm-run --release | |
| - name: Stage pd-vm CLI artifact | |
| working-directory: rustscript | |
| shell: bash | |
| run: | | |
| mkdir -p dist | |
| suffix="" | |
| if [[ "${{ runner.os }}" == "Windows" ]]; then suffix=".exe"; fi | |
| cp "target/release/pd-vm-run${suffix}" "dist/pd-vm-run-${{ runner.os }}-${{ runner.arch }}${suffix}" | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: pd-vm-cli-${{ runner.os }}-${{ runner.arch }} | |
| path: rustscript/dist/* | |
| - name: Upload pd-vm CLI release asset | |
| if: startsWith(github.ref, 'refs/tags/') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: rustscript/dist/* | |
| vscode-extension: | |
| name: VS Code extension | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| - name: Build language service wasm | |
| run: cargo build -p pd-vm-wasm --target wasm32-unknown-unknown --release | |
| - name: Stage language service wasm | |
| shell: bash | |
| run: | | |
| mkdir -p vscode-rustscript/wasm | |
| cp target/wasm32-unknown-unknown/release/pd_vm_wasm.wasm vscode-rustscript/wasm/pd_vm_wasm.wasm | |
| - name: Package VS Code extension | |
| working-directory: vscode-rustscript | |
| run: | | |
| mkdir -p dist | |
| npx --yes @vscode/vsce package --out dist/rustscript-vscode.vsix | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: rustscript-vscode-extension | |
| path: vscode-rustscript/dist/*.vsix | |
| - name: Upload VS Code extension release asset | |
| if: startsWith(github.ref, 'refs/tags/') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: vscode-rustscript/dist/*.vsix |