keyhunter 0.2.0

Check for leaked API keys and secrets on public websites
Documentation
name: CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
  cancel-in-progress: ${{ github.ref_name != 'main' }}

env:
  NODE_VERSION: 20

jobs:
  format:
    name: Format
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: Boshen/setup-rust@main
        with:
          components: rustfmt
          tools: taplo-cli
          restore-cache: false
      - run: taplo lint
      - run: cargo fmt -- --check

  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Boshen/setup-rust@main
        with:
          components: clippy
          cache-key: warm

      - run: cargo clippy --all-targets --all-features --no-deps -- -D warnings

  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Boshen/setup-rust@main
        with:
          cache-key: warm
          tools: cargo-nextest
      - run: cargo check --all-features --all-targets

  doc:
    name: Doc
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Boshen/setup-rust@main
        with:
          cache-key: warm
          components: rust-docs
      - run: make doc

  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
      - uses: Boshen/setup-rust@main
        with:
          # warm cache factory for all other CI jobs
          # cache `target` directory to avoid download crates
          save-cache: ${{ github.ref_name == 'main' }}
          cache-key: warm
          tools: cargo-nextest

      - run: npm install -g http-server
      - run: cargo check --all-features --all-targets
      - run: cargo test --all-features --no-run
      - run: cargo nextest run --all-features
      - run: cargo test --doc --all-features