ferromark 0.2.0

Ultra-high-performance Markdown to HTML compiler
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        include:
          - { os: ubuntu-latest, rust: stable, features: default, args: "" }
          - { os: macos-latest, rust: stable, features: default, args: "" }
          - { os: windows-latest, rust: stable, features: default, args: "" }
          - { os: ubuntu-latest, rust: stable, features: all, args: "--all-features" }
          - { os: ubuntu-latest, rust: "1.85", features: default, args: "" }
          - { os: ubuntu-latest, rust: "1.85", features: all, args: "--all-features" }
    runs-on: ${{ matrix.os }}
    name: test (${{ matrix.os }}, rust ${{ matrix.rust }}, ${{ matrix.features }})
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
      - uses: dtolnay/rust-toolchain@fa04a1451ff1842e2626ccb99004d0195b455a88 # master
        with:
          toolchain: ${{ matrix.rust }}
      - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
      - run: cargo test --locked ${{ matrix.args }}

  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
      - uses: dtolnay/rust-toolchain@fa04a1451ff1842e2626ccb99004d0195b455a88 # master
        with:
          toolchain: stable
          components: clippy
      - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
      - run: cargo clippy --all-targets --all-features --locked -- -D warnings

  fmt:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
      - uses: dtolnay/rust-toolchain@fa04a1451ff1842e2626ccb99004d0195b455a88 # master
        with:
          toolchain: stable
          components: rustfmt
      - run: cargo fmt --check
      - run: ./scripts/check-workflow-pins.sh

  rustsec:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
      - uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 # v2
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

  homepage:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: homepage
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
      - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6
        with:
          package_json_file: homepage/package.json
      - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
        with:
          node-version: "22"
          cache: pnpm
          cache-dependency-path: homepage/pnpm-lock.yaml
      - run: pnpm install --frozen-lockfile
      - run: pnpm run audit
      - run: pnpm build