name: Build and Store WASM

on:
  push:
    branches:
      - main

jobs:
  build-and-upload:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'
          cache: 'npm'
      - name: Install dependencies
        run: npm install
      - name: Use correct Rust toolchain
        shell: bash
        run: |
          [ -e rust-toolchain.toml ] || cp rust/rust-toolchain.toml ./
      - name: Install rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          cache: false # Configured below.
      - uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc
        with:
          tool: wasm-pack
      - name: Rust Cache
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: rust
      - name: build wasm
        run: npm run build:wasm


      # Upload the WASM bundle as an artifact
      - uses: actions/upload-artifact@v4
        with:
          name: wasm-bundle
          path: rust/kcl-wasm-lib/pkg
