heron 5.0.2

An ergonomic physics API for 2d and 3d bevy games. (powered by rapier)
Documentation
name: build

on:
  push:
    branches:
      - main
      - rc
      - beta
      - alpha
      - "[0-9]+.x"

  pull_request:
  workflow_dispatch:

env:
  RUST_VERSION: 1.62.1
  RUSTFLAGS: "-D warnings"
  RUSTDOCFLAGS: "-D warnings"

jobs:
  test-no-feature:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: ${{ env.RUST_VERSION }}
          profile: minimal
          override: true
      - run: cargo test --workspace --no-default-features
      - run: cargo test --workspace
  test-all-features:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: ${{ env.RUST_VERSION }}
          profile: minimal
          override: true
      - run: cargo test --workspace --all-features
      - run: cargo test --workspace --all-features -- --ignored
  test-2d:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: ${{ env.RUST_VERSION }}
          profile: minimal
          override: true
      - run: cargo test -p heron_rapier --no-default-features --features 2d
      - run: cargo test -p heron_debug --no-default-features --features 2d
      - run: cargo test --no-default-features --features 2d
  test-3d:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: ${{ env.RUST_VERSION }}
          profile: minimal
          override: true
      - run: cargo test -p heron_core --no-default-features --features 3d
      - run: cargo test -p heron_rapier --no-default-features --features 3d
      - run: cargo test -p heron_debug --no-default-features --features 3d
      - run: cargo test --no-default-features --features 3d
  test-debug-2d:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: ${{ env.RUST_VERSION }}
          profile: minimal
          override: true
      - run: cargo test --no-default-features --features debug-2d
  test-debug-3d:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: ${{ env.RUST_VERSION }}
          profile: minimal
          override: true
      - run: cargo test --no-default-features --features debug-3d
  test-enhanced-determinism:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: ${{ env.RUST_VERSION }}
          profile: minimal
          override: true
      - run: cargo test -p heron_rapier --no-default-features --features enhanced-determinism
      - run: cargo test --no-default-features --features enhanced-determinism
  test-collision-from-mesh:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: ${{ env.RUST_VERSION }}
          profile: minimal
          override: true
      - run: cargo test -p heron_core --no-default-features --features collision-from-mesh
      - run: cargo test --no-default-features --features collision-from-mesh
  code-style:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install rust toolchain
        uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: ${{ env.RUST_VERSION }}
          override: true
          components: clippy, rustfmt
      - run: cargo fmt --all -- --check
      - run: cargo clippy --all-features --workspace
  documentation:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install rust toolchain
        uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: stable
          override: true
          components: clippy, rustfmt
      - run: cargo doc --all-features --no-deps --workspace
  unwanted-dependencies:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: stable
          override: true
          profile: minimal
      - run: cargo install cargo-deny --locked
      - run: cargo deny check

  release:
    if: ${{ github.event_name != 'pull_request' }}
    needs:
      - test-no-feature
      - test-all-features
      - test-2d
      - test-3d
      - test-debug-2d
      - test-debug-3d
      - test-enhanced-determinism
      - test-collision-from-mesh
      - documentation
    environment: release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
          profile: minimal
      - run: npm install --no-save conventional-changelog-conventionalcommits @semantic-release/exec
      - run: npx semantic-release
        env:
          GITHUB_TOKEN: ${{ github.token }}
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}