# Build and publish ruff-api for wasm. # # Assumed to run as a subworkflow of .github/workflows/release.yml; specifically, as a publish # job within `cargo-dist`. name: "Build and publish wasm" on: workflow_dispatch: workflow_call: inputs: plan: required: true type: string env: CARGO_INCREMENTAL: 0 CARGO_NET_RETRY: 10 CARGO_TERM_COLOR: always RUSTUP_MAX_RETRIES: 10 jobs: ruff_wasm: runs-on: ubuntu-latest permissions: contents: read id-token: write strategy: matrix: target: [web, bundler, nodejs] fail-fast: false steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: "Install Rust toolchain" run: rustup target add wasm32-unknown-unknown - uses: jetli/wasm-pack-action@0d096b08b4e5a7de8c28de67e11e945404e9eefa # v0.4.0 with: version: v0.13.1 - uses: jetli/wasm-bindgen-action@20b33e20595891ab1a0ed73145d8a21fc96e7c29 # v0.2.0 - name: "Run wasm-pack build" run: wasm-pack build --target ${{ matrix.target }} crates/ruff_wasm - name: "Rename generated package" run: | # Replace the package name w/ jq jq '.name="@astral-sh/ruff-wasm-${{ matrix.target }}"' crates/ruff_wasm/pkg/package.json > /tmp/package.json mv /tmp/package.json crates/ruff_wasm/pkg - run: cp LICENSE crates/ruff_wasm/pkg # wasm-pack does not put the LICENSE file in the pkg - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: node-version: 22 registry-url: "https://registry.npmjs.org" - name: "Publish (dry-run)" if: ${{ inputs.plan == '' || fromJson(inputs.plan).announcement_tag_is_implicit }} run: npm publish --dry-run crates/ruff_wasm/pkg - name: "Publish" if: ${{ inputs.plan != '' && !fromJson(inputs.plan).announcement_tag_is_implicit }} run: npm publish --provenance --access public crates/ruff_wasm/pkg env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}