clang 2.1.0

A somewhat idiomatic Rust wrapper for libclang.
Documentation
name: CI

on:
  push:
    branches:
      - master
  pull_request:

jobs:
  fmt:
    name: Check formatting
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v6
    - run: cargo fmt -- --check

  ci:
    name: Test ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: macOS
            os: macos-latest
            clang: ["14.0", "clang_10_0"]
            rust: "1.71.0"
          - name: Ubuntu
            os: ubuntu-latest
            clang: ["14.0", "clang_10_0"]
            rust: "1.71.0"
          - name: Windows
            os: windows-latest
            clang: ["14.0", "clang_10_0"]
            rust: "1.71.0"

    steps:
      - uses: actions/checkout@v6

      # LLVM and Clang
      - name: Install LLVM and Clang
        uses: KyleMayes/install-llvm-action@v2.0.3
        with:
          version: ${{ matrix.clang[0] }}
          directory: ${{ runner.temp }}/llvm-${{ matrix.clang[0] }}

      # Rust
      - name: Install Rust
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}

      # Cargo
      - name: Generate lockfile
        run: cargo generate-lockfile

      # Test
      - name: Cargo Test (Dynamic)
        env:
          LIBCLANG_PATH: ${{ runner.temp }}/llvm-${{ matrix.clang[0] }}/lib
          LLVM_CONFIG_PATH: ${{ runner.temp }}/llvm-${{ matrix.clang[0] }}/bin/llvm-config
        run: cargo test --verbose --features ${{ matrix.clang[1] }} -- --nocapture

      - name: Cargo Test (Runtime)
        env:
          LIBCLANG_PATH: ${{ runner.temp }}/llvm-${{ matrix.clang[0] }}/lib
          LLVM_CONFIG_PATH: ${{ runner.temp }}/llvm-${{ matrix.clang[0] }}/bin/llvm-config
        run: cargo test --verbose --features "${{ matrix.clang[1] }} runtime" -- --nocapture