niffler 3.0.1

Simple and transparent support for compressed files
Documentation
name: CI

on:
  push:
    branches: [master]
  pull_request:
    branches: ["**"]

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2

      - name: Run cargo check
        run: |
          cargo check

  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        build: [beta, stable, windows, macos]
        include:
          - build: macos
            os: macos-latest
            rust: stable
          - build: windows
            os: windows-latest
            rust: stable
          - build: beta
            os: ubuntu-latest
            rust: beta
          - build: stable
            os: ubuntu-latest
            rust: stable
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: ${{ matrix.rust }}

      - uses: Swatinem/rust-cache@v2

      - uses: taiki-e/install-action@nextest

      - name: Run tests
        run: |
          cargo nextest run

  test_all_features:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable

      - uses: Swatinem/rust-cache@v2

      - uses: taiki-e/install-action@nextest

      - name: Run tests for all features
        run: |
          cargo nextest run --no-default-features --features bgz,bgzip/default
          cargo nextest run --no-default-features --features bz2,bzip2/default
          cargo nextest run --no-default-features --features gz,flate2/default
          cargo nextest run --no-default-features --features lzma,liblzma/default
          cargo nextest run --no-default-features --features zstd,zstd/default

  coverage:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
        with:
          components: llvm-tools-preview
      - uses: Swatinem/rust-cache@v2

      - uses: taiki-e/install-action@cargo-llvm-cov
      - uses: taiki-e/install-action@nextest

      - name: Collect coverage data
        run: cargo llvm-cov nextest --lcov --output-path lcov.info

      - name: Upload coverage to codecov
        uses: codecov/codecov-action@v5
        with:
          files: ./lcov.info
          token: ${{ secrets.CODECOV_TOKEN }}

  lints:
    name: Lints
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
        with:
          components: "clippy, rustfmt"

      - uses: Swatinem/rust-cache@v2

      - name: Run cargo fmt
        run: |
          cargo fmt --all -- --check

      - name: Run cargo clippy
        run: |
          cargo clippy --all -- -D warnings

  publish:
    name: Publish (dry-run)
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2

      - name: Check semver
        uses: obi1kenobi/cargo-semver-checks-action@v2
        with:
          feature-group: default-features

      - name: Make sure we can publish the crate
        run: |
          cargo publish --dry-run

  minimum_rust_version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: "1.82.0"

      - uses: Swatinem/rust-cache@v2

      - uses: taiki-e/install-action@nextest

      - name: check if README matches MSRV defined here
        run: grep '1.82.0' README.md

      - name: check if Cargo.toml matches MSRV defined here
        run: grep 'rust-version = "1.82"' Cargo.toml

      - name: verify crate builds with MSRV
        run: |
          cargo build --all-features

  wasm:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
        with:
          target: wasm32-unknown-unknown

      - uses: Swatinem/rust-cache@v2

      - name: Build on wasm
        run: |
          cargo build --target wasm32-unknown-unknown --no-default-features --features wasm