prosa-hyper 0.3.0

ProSA Hyper processor for HTTP client/server
Documentation
---
name: Rust

# yamllint disable-line rule:truthy
on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:
  schedule: [cron: "40 1 * * *"]

env:
  RUSTFLAGS: -Dwarnings
  RUST_BACKTRACE: 1
  CARGO_TERM_COLOR: always

permissions:
  contents: read

jobs:
  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: stable
          components: clippy,rustc-dev
      - run: >
          cargo clippy --color always --verbose
          --workspace --all-targets
          --all-features --tests

  fmt:
    name: Rust fmt
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: stable
          components: rustfmt
      - run: cargo fmt -- --check

  deny:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - uses: EmbarkStudios/cargo-deny-action@v2

  doc:
    name: Documentation
    runs-on: ubuntu-latest
    timeout-minutes: 30
    env:
      RUSTDOCFLAGS: -Dwarnings
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: stable
          components: rustfmt
      - run: cargo doc --all-features --color=always --verbose --workspace --no-deps

  build:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: stable
          components: rustc-dev
      - run: cargo check --workspace --tests --all-features --release

  doc_test:
    name: Doc tests
    needs: build
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: llvm-tools, rustc-dev
      - run: >
          cargo test --doc
          --verbose --color always
          --workspace --no-fail-fast

  test:
    name: Tests
    needs: build
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: llvm-tools, rustc-dev
      - run: >
          cargo test --release --tests
          --verbose --color always
          --workspace --no-fail-fast