leopard-codec 0.2.0

Implementation of Reed-Solomon codes using leopard algorithm
Documentation
name: CI

on:
  push:
    branches:
      - main
  pull_request:

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

    - name: Setup toolchain
      uses: actions-rust-lang/setup-rust-toolchain@v1
      with:
        components: clippy
        target: wasm32-unknown-unknown
        rustflags: -D warnings -D missing-docs

    - name: Install Go
      uses: actions/setup-go@v4
      with:
        go-version: '1.22.x'

    - name: Run clippy for native
      run: cargo clippy --all-features --all-targets

    - name: Run clippy for wasm32
      run: cargo clippy --all-features --target wasm32-unknown-unknown


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

    - name: Setup toolchain
      uses: actions-rust-lang/setup-rust-toolchain@v1
      with:
        rustflags: -D missing-docs

    - name: Install Go
      uses: actions/setup-go@v4
      with:
        go-version: '1.22.x'

    - name: Run rustdoc check
      env:
        RUSTDOCFLAGS: -D warnings
      run: cargo doc


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

    - name: Setup toolchain
      uses: actions-rust-lang/setup-rust-toolchain@v1
      with:
        components: rustfmt

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


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

    - name: Setup toolchain
      uses: actions-rust-lang/setup-rust-toolchain@v1

    - name: Install Go
      uses: actions/setup-go@v4
      with:
        go-version: '1.22.x'

    - name: Run tests
      run: cargo test --all-features


  unused-deps:
    runs-on: ubuntu-latest
    name: unused dependencies
    steps:
    - name: Checkout sources
      uses: actions/checkout@v4

    - name: Setup toolchain
      uses: actions-rust-lang/setup-rust-toolchain@v1
      with:
        toolchain: nightly

    - name: Install cargo-udeps
      uses: taiki-e/install-action@v2
      with:
        tool: cargo-udeps

    - name: Install Go
      uses: actions/setup-go@v4
      with:
        go-version: '1.22.x'

    - name: Check for unused dependencies
      run: cargo udeps --all-features --all-targets


  minimal-versions:
    runs-on: ubuntu-latest
    name: minimal versions of dependencies
    steps:
    - uses: actions/checkout@v4

    - name: Setup toolchain
      uses: actions-rust-lang/setup-rust-toolchain@v1

    - name: Install cargo-minimal-versions
      uses: taiki-e/install-action@v2
      with:
        tool: cargo-hack,cargo-minimal-versions

    - name: Check minimal versions
      run: cargo minimal-versions check --direct --all-features


  msrv:
    runs-on: ubuntu-latest
    name: minimum supported rust version
    steps:
    - uses: actions/checkout@v4

    - name: Setup toolchain
      uses: actions-rust-lang/setup-rust-toolchain@v1

    - name: Install cargo-minimal-versions
      uses: taiki-e/install-action@v2
      with:
        tool: cargo-msrv

    - name: Check MSRV
      run: cargo msrv verify --all-features


  required:
    runs-on: ubuntu-latest
    name: Required checks
    if: ${{ !cancelled() }}
    needs:
    - clippy
    - docs
    - fmt
    - test
    - unused-deps
    - minimal-versions
    - msrv

    steps:
    - name: On failure
      if: always() && contains(needs.*.result, 'failure')
      run: exit 1