rasgapdf 0.3.2

Blazing-fast spatial 2D PDF parser in pure Rust with multi-language bindings (Python, Node.js, Go, C#) for RAG, LLMs, bounding boxes, and table extraction
Documentation
name: CI

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

permissions:
  contents: read

jobs:
  build:
    name: Build & Test (Rust, Python, Node, Go)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.0

      - name: Install Linux system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y pkg-config libfontconfig1-dev libfreetype6-dev libharfbuzz-dev libclang-dev

      - name: Set up Rust
        uses: dtolnay/rust-toolchain@b725eda525362e7cf34af9a7243cac1e3f01a7ec # stable

      - name: Build Rust Core
        run: cargo build --release --verbose

      - name: Run Rust Tests
        run: cargo test --release --verbose

      - name: Set up Python
        uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.0.0
        with:
          python-version: '3.11'

      - name: Test Python Binding
        run: |
          python -m pip install --upgrade pip
          python -c "import sys; sys.path.insert(0, 'bindings/python'); from rasgapdf import version; print('Python FFI Version:', version())"

      - name: Set up Node.js
        uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.0.0
        with:
          node-version: '22'

      - name: Test Node.js Binding
        run: |
          cd bindings/nodejs
          npm install
          node -e "const { version } = require('./index.js'); console.log('Node FFI Version:', version());"

      - name: Set up Go
        uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
        with:
          go-version: '1.22'

      - name: Test Go Binding
        run: |
          cd bindings/go
          go run cmd/main.go