tokise 0.3.0

An asynchronous runtime compatible with WebAssembly and non-WebAssembly targets.
Documentation
---
name: Run Tests & Publishing

on: [push, pull_request]

jobs:
  lint:
    name: Lint Codebase
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Setup toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: stable
          components: clippy
          targets: wasm32-unknown-unknown

      - uses: Swatinem/rust-cache@v2
        with:
          save-if: ${{ github.ref == 'refs/heads/master' }}

      - name: Run clippy
        run: cargo clippy --all-features

      - name: Run clippy (WebAssembly)
        run: cargo clippy --all-features --target=wasm32-unknown-unknown

  test:
    name: Run Tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Setup toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: stable

      - uses: Swatinem/rust-cache@v2
        with:
          save-if: ${{ github.ref == 'refs/heads/master' }}

      - name: Run tests
        run: cargo test --all-features

  publish:
    name: Publish to crates.io
    runs-on: ubuntu-latest
    needs:
      - lint
      - test
    if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/'))
    steps:
      - uses: actions/checkout@v6

      - name: Setup toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: stable

      - uses: Swatinem/rust-cache@v2
        with:
          save-if: ${{ github.ref == 'refs/heads/master' }}

      - name: Run cargo publish --dry-run
        if: github.ref == 'refs/heads/master'
        run: cargo publish --dry-run

      - name: Run cargo publish
        if: startsWith(github.ref, 'refs/tags/')
        run: cargo publish --token ${{ secrets.CRATES_IO_TOKEN }}