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: actions/checkout@v4
with:
repository: rustscript-lang/pd-edge
path: pd-edge
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Format check
working-directory: rustscript
run: cargo fmt --all -- --check
- 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: actions/checkout@v4
with:
repository: rustscript-lang/pd-edge
path: pd-edge
- 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: actions/setup-node@v4
with:
node-version: '22'
- 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