cargo-sync-rdme 0.8.0

Cargo subcommand to synchronize README with crate documentation
name: Security Audit

on:
  schedule:
    # Runs at 00:00 UTC everyday
    - cron: "0 0 * * *"
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: ${{ github.ref_name != github.event.repository.default_branch }}

permissions: {}

jobs:
  issue-reporting:
    name: Audit (issue reporting)
    runs-on: ubuntu-latest
    permissions:
      issues: write
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
      - uses: actions-rust-lang/audit@72c09e02f132669d52284a3323acdb503cfc1a24 # v1.2.7

  advisories:
    name: Audit (advisories)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - uses: dtolnay/rust-toolchain@02cb101ec7c40f2c49e1d9714d64511d8e1b74de # v1
        with:
          toolchain: stable
      - uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
      - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
      - run: mise run audit:advisories
        shell: bash

  policy:
    name: Audit (bans, licenses, sources)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - uses: dtolnay/rust-toolchain@02cb101ec7c40f2c49e1d9714d64511d8e1b74de # v1
        with:
          toolchain: stable
      - uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
      - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
      - run: mise run audit:policy
        shell: bash

  audit-complete:
    # Wait for cargo-audit and cargo-deny advisories to finish so issue reporting
    # and advisory results are visible, but intentionally exclude them from the
    # required status check so newly disclosed advisories do not suddenly fail CI.
    needs:
      - issue-reporting
      - advisories
      - policy
    runs-on: ubuntu-latest
    if: ${{ always() }}
    steps:
      - name: Audit complete
        run: |
          if [[ "${{ needs['policy'].result }}" == "success" ]]; then
            echo "Audit succeeded"
          else
            echo "Audit failed"
            exit 1
          fi
        shell: bash