lockboxer 0.2.0

Configurable fork of Lockbox encryption library.
Documentation
name: CI

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

env:
  CARGO_TERM_COLOR: always

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  build-test:
    name: Build & Test (Rust ${{ matrix.rust }}, ${{ matrix.os }})
    strategy:
      matrix:
        rust: [stable]
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}

    steps:
      - name: Checkout repository
        uses: actions/checkout@v5

      - name: Install Rust ${{ matrix.rust }}
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          profile: minimal
          override: true
          components: clippy,rustfmt

      - name: Cache Cargo artifacts
        uses: Swatinem/rust-cache@v2

      - name: Build
        run: cargo build --verbose

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

      - name: Check formatting
        run: cargo fmt -- --check

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

  checks:
    name: Checks
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v5

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          profile: minimal
          override: true

      - name: Cache Cargo artifacts
        uses: Swatinem/rust-cache@v2

      - name: Detect unused dependencies (cargo‑machete)
        uses: bnjbvr/cargo-machete@main

      - name: Policy checks (cargo‑deny)
        uses: EmbarkStudios/cargo-deny-action@v2

      - name: Ensure docs build
        env:
          RUSTDOCFLAGS: '-D warnings'
        run: cargo doc --no-deps