code-digest 0.5.0

High-performance CLI tool to convert codebases to Markdown for LLM context
Documentation
name: CI

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

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: 1

jobs:
  # Run validation checks first - these are fast and provide quick feedback
  validate:
    name: Validate Code Quality
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    
    - name: Install Rust toolchain
      uses: dtolnay/rust-toolchain@stable
      with:
        components: rustfmt, clippy
    
    - name: Cache dependencies
      uses: Swatinem/rust-cache@v2
    
    - name: Run validation checks
      run: make validate

  # Run tests on multiple platforms
  test:
    name: Test on ${{ matrix.os }}
    needs: validate
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        rust: [stable]
        
    steps:
    - uses: actions/checkout@v4
    
    - name: Install Rust toolchain
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: ${{ matrix.rust }}
    
    - name: Cache dependencies
      uses: Swatinem/rust-cache@v2
    
    - name: Run all tests
      run: make test

  # Build release binaries
  build:
    name: Build release on ${{ matrix.os }}
    needs: [validate, test]
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
            artifact: code-digest-linux-amd64
          - os: windows-latest
            target: x86_64-pc-windows-msvc
            artifact: code-digest-windows-amd64.exe
          - os: macos-latest
            target: aarch64-apple-darwin
            artifact: code-digest-macos-aarch64
            
    steps:
    - uses: actions/checkout@v4
    
    - name: Install Rust toolchain
      uses: dtolnay/rust-toolchain@stable
      with:
        targets: ${{ matrix.target }}
    
    - name: Cache dependencies
      uses: Swatinem/rust-cache@v2
    
    - name: Build release binary
      run: cargo build --release --target ${{ matrix.target }} --all-features
    
    - name: Upload artifact (Unix)
      if: matrix.os != 'windows-latest'
      uses: actions/upload-artifact@v4
      with:
        name: ${{ matrix.artifact }}
        path: target/${{ matrix.target }}/release/code-digest
        retention-days: 7
    
    - name: Upload artifact (Windows)
      if: matrix.os == 'windows-latest'
      uses: actions/upload-artifact@v4
      with:
        name: ${{ matrix.artifact }}
        path: target/${{ matrix.target }}/release/code-digest.exe
        retention-days: 7

  # Security audit
  security:
    name: Security audit
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    
    - name: Install Rust toolchain
      uses: dtolnay/rust-toolchain@stable
    
    - name: Cache dependencies
      uses: Swatinem/rust-cache@v2
    
    - name: Install cargo-audit
      run: cargo install cargo-audit
    
    - name: Run security audit
      run: cargo audit

  # Check documentation  
  docs:
    name: Documentation
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    
    - name: Install Rust toolchain
      uses: dtolnay/rust-toolchain@stable
    
    - name: Cache dependencies
      uses: Swatinem/rust-cache@v2
    
    - name: Check documentation builds
      run: cargo doc --no-deps --all-features
      env:
        RUSTDOCFLAGS: -D warnings