app-queue 0.1.0

In-app persistent queue for asynchronous jobs
Documentation
name: Build checks
on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:
jobs:
  check:
    name: Test compilation
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        rust:
          - stable
          - beta
          - nightly
          - 1.60.0
        os:
          - ubuntu-latest
          - windows-latest
          - macos-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ matrix.os }}-cargo-${{ matrix.rust }}-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: check
  test:
    needs: check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ubuntu-latest-cargo-nightly-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: test
  coverage:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ubuntu-latest-cargo-nightly-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --no-fail-fast
        env:
          CARGO_INCREMENTAL: "0"
          RUSTFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests"
          RUSTDOCFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests"
      - uses: actions-rs/grcov@v0.1
        id: coverage
      - name: Coveralls upload
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path-to-lcov: ${{ steps.coverage.outputs.report }}
  rustfmt:
    needs: coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ubuntu-latest-cargo-nightly-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: rustfmt
      - uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check
  clippy:
    needs: coverage
    runs-on: ubuntu-latest
    env:
      CLIPPY_FLAGS: -Dfuture-incompatible -Ddeprecated-in-future -Welided-lifetimes-in-paths -Wexplicit-outlives-requirements -Dkeyword-idents -Wmacro-use-extern-crate -Wmeta-variable-misuse -Dmissing-abi -Dmissing-copy-implementations -Dmissing-debug-implementations -Wmissing-docs -Wnoop-method-call -Wpointer-structural-match -Wsingle-use-lifetimes -Wtrivial-casts -Wtrivial-numeric-casts -Wunreachable-pub -Dunsafe-op-in-unsafe-fn -Wunused-crate-dependencies -Wunused-extern-crates -Wunused-import-braces -Wunused-lifetimes -Wunused-qualifications -Wvariant-size-differences -Dclippy::all -Wclippy::nursery -Wclippy::pedantic -Wclippy::cargo -Wclippy::clone_on_ref_ptr -Dclippy::default_union_representation -Dclippy::expect_used -Wclippy::get_unwrap -Wclippy::if_then_some_else_none -Dclippy::lossy_float_literal -Wclippy::map_err_ignore -Wclippy::missing_docs_in_private_items -Wclippy::panic -Dclippy::panic_in_result_fn -Wclippy::rc_buffer -Dclippy::rc_mutex -Wclippy::str_to_string -Wclippy::try_err -Dclippy::undocumented_unsafe_blocks -Dclippy::unwrap_used -Aclippy::type-repetition-in-bounds -Aclippy::trait-duplication-in-bounds
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ubuntu-latest-cargo-nightly-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: clippy
      - uses: actions-rs/cargo@v1
        with:
          command: install
          args: clippy-sarif sarif-fmt
      - run: cargo clippy --message-format=json -- $CLIPPY_FLAGS -A dead_code -A unused_variables | clippy-sarif | tee rust-clippy-results.sarif | sarif-fmt
        continue-on-error: true
      - name: Upload analysis results to GitHub
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: rust-clippy-results.sarif
          wait-for-processing: true
      - uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: -- ${{ env.CLIPPY_FLAGS }}
  docs:
    needs: coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ubuntu-latest-cargo-nightly-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: doc
      - run: |
          mkdir public
          mv target/doc public/rust
        if: github.ref == 'refs/heads/master'
      - name: Deploy to GitHub Pages
        uses: crazy-max/ghaction-github-pages@v3
        with:
          target_branch: gh-pages
          build_dir: public
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        if: (github.ref == 'refs/heads/master') && success()
  update_contributors:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
      - uses: akhilmhdh/contributors-readme-action@v2.3.6
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}