brood 0.9.1

A fast and flexible entity component system library.
Documentation
name: CI

on:
  push:
  pull_request:

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - 1.65.0
          - stable
          - beta
          - nightly
      fail-fast: false
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@master
      with:
        toolchain: ${{ matrix.rust }}
        components: rust-src
    - run: curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C ~/.cargo/bin
    - run: cargo hack test --feature-powerset

  no_std:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - 1.65.0
          - stable
          - beta
          - nightly
      fail-fast: false
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@master
      with:
        toolchain: ${{ matrix.rust }}
        targets: thumbv6m-none-eabi
    - run: curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C ~/.cargo/bin
    - run: cargo hack build --feature-powerset --exclude-features rayon --target thumbv6m-none-eabi

  fmt:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rustfmt
    - run: cargo fmt -- --check

  check:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@nightly
    - run: curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C ~/.cargo/bin
    - run: cargo hack check --feature-powerset

  clippy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: clippy
    - run: curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C ~/.cargo/bin
    - run: cargo hack clippy --feature-powerset -- --deny warnings

  doc:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@nightly
    - run: cargo doc --no-deps --all-features
      env:
        RUSTDOCFLAGS: --cfg doc_cfg -D warnings

  private_doc:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@nightly
    - run: cargo doc --no-deps --all-features --document-private-items
      env:
        RUSTDOCFLAGS: --cfg doc_cfg -D warnings

  msrv:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@nightly
    - run: curl -LsSf https://github.com/foresterre/cargo-msrv/releases/latest/download/cargo-msrv_v0.15.1_Linux_x86_64.tar | tar xf - -C ~/.cargo/bin
    - run: cargo msrv --verify

  miri:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: miri
    - run: curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C ~/.cargo/bin
    - run: cargo hack miri test --feature-powerset
      env:
        MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-ignore-leaks
        RUSTFLAGS: --cfg skip_trybuild

  valgrind:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - run: sudo apt install valgrind
    - uses: dtolnay/rust-toolchain@nightly
    - run: curl -LsSf https://github.com/jfrimmel/cargo-valgrind/releases/latest/download/cargo-valgrind-2.1.0-x86_64-unknown-linux-musl.tar.gz | tar xzf - -C ~/.cargo/bin
    - run: curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C ~/.cargo/bin
    - run: cargo hack valgrind test --feature-powerset --exclude-features rayon
      env:
        RUSTFLAGS: --cfg skip_trybuild

  codecov:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: llvm-tools-preview, rust-src
    - run: curl -LsSf https://github.com/taiki-e/cargo-llvm-cov/releases/latest/download/cargo-llvm-cov-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C ~/.cargo/bin
    - run: cargo llvm-cov --all-features --lcov --output-path lcov.info
    - uses: codecov/codecov-action@v3
      with:
        files: lcov.info
        fail_ci_if_error: true