hidefix 0.12.0

Concurrent HDF5 and NetCDF4 reader (experimental)
Documentation
---
name: Rust

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

env:
  CARGO_TERM_COLOR: always

jobs:
  lint:
    name: ${{matrix.command}}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - {command: fmt, rust: nightly}
          - {command: clippy, rust: nightly}
          - {command: doc, rust: nightly}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust (${{matrix.rust}})
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: '${{matrix.rust}}'
          components: 'rustfmt, clippy'
      - name: Run cargo ${{matrix.command}}
        uses: actions-rs/cargo@v1
        with:
          command: ${{matrix.command}}
          args: "${{matrix.command == 'fmt' && '--all -- --check' || matrix.command == 'doc' && '--workspace' || '--workspace -- -D warnings'}}"

  test:
    name: Test
    runs-on: ${{matrix.platform}}
    strategy:
      fail-fast: false
      matrix:
        include:
          - {platform: ubuntu-latest, rust: nightly}
          - {platform: ubuntu-latest, rust: stable}
          - {platform: windows-latest, rust: nightly}
          - {platform: macos-latest, rust: nightly}

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust (${{matrix.rust}})
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: '${{matrix.rust}}'
      - name: Build and test all crates
        run: cargo test -vv --workspace ${{matrix.rust == 'nightly' &&  '--features unstable' || '' }}
      - name: Build and test all docs
        run: cargo test -vv --workspace --doc ${{matrix.rust == 'nightly' &&  '--features unstable' || '' }}
      - name: Build examples
        run: cargo b --examples --verbose ${{matrix.rust == 'nightly' &&  '--features unstable' || '' }}

  bench:
    name: Benchmark
    runs-on: ubuntu-${{matrix.ubuntu}}
    strategy:
      fail-fast: false
      matrix:
        include:
          - {ubuntu: latest, rust: nightly}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust (${{matrix.rust}})
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: '${{matrix.rust}}'
      - name: Build and bench
        run: cargo bench -vv --workspace --features unstable

  audit:
    name: Audit
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: nightly
      - name: Install cargo audit
        run: cargo install cargo-audit
      - name: Run cargo audit
        run: cargo audit

  codecov:
    name: Code coverage
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: nightly
      - name: Install tarpaulin
        run: cargo install cargo-tarpaulin
      - name: Run code coverage
        run: cargo tarpaulin --verbose --out xml --ignore-tests
      - name: Upload code coverage
        run: bash <(curl -s https://codecov.io/bash)

  addr_san:
    name: Address sanitizer
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: nightly
      - name: Run test with sanitizer
        env:
          RUSTFLAGS: "-Z sanitizer=address"
          RUSTDOCFLAGS: "-Z sanitizer=address"
        run: cargo test --target x86_64-unknown-linux-gnu --workspace