tar-no-std 0.5.0

A no_std, allocation-free library focused on reading regular files from basic Tar archives
Documentation
name: Build

on: [ push, pull_request, merge_group ]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: "${{ matrix.runs-on }}"
    strategy:
      matrix:
        runs-on:
          - macos-latest
          - ubuntu-latest
          - windows-latest
        rust:
          - stable
          - nightly
          - 1.85.0 # MSVR
    steps:
      - uses: actions/checkout@v7
      - name: Setup Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: "${{ matrix.rust }}"
      - uses: Swatinem/rust-cache@v2
        with:
          key: "${{ matrix.runs-on }}-${{ matrix.rust }}"
      - name: Build
        run: cargo build --all-targets --verbose --features alloc
      # use some arbitrary no_std target
      - name: Install no_std target thumbv7em-none-eabihf
        run: rustup target add thumbv7em-none-eabihf
      - name: Build (no_std)
        run: cargo build --verbose --target thumbv7em-none-eabihf --features alloc
      - name: Run tests
        run: cargo test --verbose --features alloc

  miri:
    runs-on: "${{ matrix.runs-on }}"
    needs:
      # Logical dependency and wait for cache to be present
      - build
    strategy:
      matrix:
        runs-on:
          - ubuntu-latest
        rust:
          - nightly
    steps:
      - uses: actions/checkout@v7
      - name: Setup Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: "${{ matrix.rust }}"
      - uses: Swatinem/rust-cache@v2
        with:
          key: "${{ matrix.runs-on }}-${{ matrix.rust }}"
      - run: rustup component add miri
      - run: cargo miri test --tests

  style_checks:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
    steps:
      - uses: actions/checkout@v7
      - name: Setup Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: "${{ matrix.rust }}"
      - uses: Swatinem/rust-cache@v2
        with:
          key: "${{ matrix.runs-on }}-${{ matrix.rust }}"
      - name: Rustfmt
        run: cargo fmt --all -- --check
      - name: Clippy
        run: cargo clippy --features alloc --all-targets
      - name: Rustdoc
        run: cargo doc --no-deps --document-private-items --features alloc