name: Rust CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: "-D warnings"

jobs:
  verify:
    name: Verify & Test
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4

      - name: Setup Rust Toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: 1.85.0
          components: rustfmt, clippy

      - name: Rust Cache
        uses: Swatinem/rust-cache@v2

      - name: Check Formatting
        run: cargo fmt --all -- --check

      - name: Clippy Audit
        run: cargo clippy --all-targets --all-features -- -D warnings

      - name: Test Suite
        run: cargo test --all-targets --all-features

      - name: Security Vulnerability Audit
        uses: rustsec/audit-check@v2.0.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Dependency License & Ban Policy (cargo-deny)
        uses: EmbarkStudios/cargo-deny-action@v2
