logic-mesh 0.9.0

Control logic engine using event based and reactive blocks written in Rust.
Documentation
on: [push, pull_request]

name: Build

jobs:
  check:
    name: Check (${{ matrix.features == '' && 'default' || matrix.features }})
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
        features:
          - ""
          - "multi-threaded"
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          override: true

      - name: Run cargo check
        uses: actions-rs/cargo@v1
        with:
          command: check
          args: ${{ matrix.features && format('--features {0}', matrix.features) || '' }}

  test:
    name: Test Suite (${{ matrix.features == '' && 'default' || matrix.features }})
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
        features:
          - ""
          - "multi-threaded"
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          override: true

      - name: Run cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --workspace ${{ matrix.features && format('--features {0}', matrix.features) || '' }}

  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2

      - name: Install toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          default: true
          components: rustfmt
          override: true

      - name: Run cargo fmt
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          toolchain: ${{ matrix.rust }}
          args: --all --check

  clippy:
    name: Clippy (${{ matrix.features == '' && 'default' || matrix.features }})
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
        features:
          - ""
          - "multi-threaded"
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          components: clippy
          override: true

      - name: Run cargo clippy
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: ${{ matrix.features && format('--features {0}', matrix.features) || '' }} -- -D warnings