name: Publish crate
on:
workflow_dispatch:
release:
types: [published]
permissions:
contents: read
jobs:
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
run: |
rustup toolchain install stable --profile minimal
rustup default stable
rustup target add wasm32-unknown-unknown
- name: Verify formatting
run: cargo fmt --check
- name: Check default target
run: cargo check --all-features
- name: Check WebAssembly target
run: cargo check --all-features --target wasm32-unknown-unknown
- name: Run Clippy
run: cargo clippy --all-features -- -D warnings
- name: Publish crate
run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}