flagdb 0.0.0

an in-memory database in Rust for rows queried using bit (flag) columns
Documentation
name: CI

env:
  CARGO_TERM_COLOR: always
  MSRV: '1.60'

on:
  push:
    branches:
    - main
  pull_request: {}

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: arduino/setup-protoc@v1
    - uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: beta
        override: true
        profile: minimal
        components: clippy, rustfmt
    - uses: Swatinem/rust-cache@v2
      with:
        key: .
        workspaces: .
    - name: Check
      working-directory: .
      run: |
        cargo clippy --all --all-targets --all-features
    - name: rustfmt
      working-directory: .
      run: |
        cargo fmt --all -- --check

  check-docs:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
        override: true
        profile: minimal
    - uses: Swatinem/rust-cache@v1
    - name: cargo doc
      env:
        RUSTDOCFLAGS: "-D broken-intra-doc-links"
      run: cargo doc --all-features --no-deps

  cargo-hack:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
        override: true
        profile: minimal
    - uses: Swatinem/rust-cache@v1
    - name: Install cargo-hack
      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
    - name: cargo hack check
      run: cargo hack check --each-feature --no-dev-deps --all

  test-versions:
    needs: check
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [stable, beta]
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: ${{ matrix.rust }}
        override: true
        profile: minimal
    - uses: Swatinem/rust-cache@v1
    - name: Run tests
      uses: actions-rs/cargo@v1
      with:
        command: test
        args: --all --all-features --all-targets

  test-msrv:
    needs: check
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: ${{ env.MSRV }}
        override: true
        profile: minimal
    - name: "install Rust nightly"
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: nightly
        profile: minimal
    - uses: Swatinem/rust-cache@v1
    - name: Select minimal versions
      uses: actions-rs/cargo@v1
      with:
        command: update
        args: -Z minimal-versions
        toolchain: nightly
    - name: Run tests
      uses: actions-rs/cargo@v1
      with:
        command: test
        args: >
          --all
          --all-features
          --all-targets
          --locked
        toolchain: ${{ env.MSRV }}

  test-docs:
    needs: check
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
        override: true
        profile: minimal
    - uses: Swatinem/rust-cache@v1
    - name: Run doc tests
      uses: actions-rs/cargo@v1
      with:
        command: test
        args: --all-features --doc

  deny-check:
    name: cargo-deny check
    runs-on: ubuntu-latest
    continue-on-error: ${{ matrix.checks == 'advisories' }}
    strategy:
      matrix:
        checks:
          - advisories
          - bans licenses sources
    steps:
      - uses: actions/checkout@v2
      - uses: EmbarkStudios/cargo-deny-action@v1
        with:
          command: check ${{ matrix.checks }}
          arguments: --all-features

  armv5te-unknown-linux-musleabi:
    needs: check
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
        target: armv5te-unknown-linux-musleabi
        override: true
        profile: minimal
    - uses: Swatinem/rust-cache@v1
    - name: Check
      uses: actions-rs/cargo@v1
      env:
        # Clang has native cross-compilation support
        CC: clang
      with:
        command: check
        args: >
          --all-targets
          --all-features
          --all
          --target armv5te-unknown-linux-musleabi

  dependencies-are-sorted:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: beta
        override: true
        profile: minimal
    - uses: Swatinem/rust-cache@v2
      with:
        key: .
        workspaces: .
    - name: Install cargo-sort
      run: |
        cargo install cargo-sort
    - name: Check dependency tables
      working-directory: .
      run: |
        cargo sort --workspace --grouped --check