name: Rust
on:
  push:
    branches: ["main"]
    paths:
      - '**/*.rs'
      - 'src/**'
      - 'Cargo.toml'
      - 'Cargo.lock'
  pull_request:
    paths:
      - '**/*.rs'
      - 'src/**'
      - 'Cargo.toml'
      - 'Cargo.lock'
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v4

      - name: Install dependencies
        run: |
          sudo apt update
          sudo apt install -y build-essential
          sudo apt-get install -y \
            libpango1.0-dev \
            libcairo2-dev \
            libatk1.0-dev \
            libgtk-4-dev \
            libsoup2.4-dev

      - name: Set up dependencies
        run: |
          export SYSTEM_DEPS_PANGO_NO_PKG_CONFIG="true"
          export SYSTEM_DEPS_PANGO_LIB="pango-1.0"

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Build
        run: |
          cargo build --verbose
          cargo build --release --verbose

  check:
    runs-on: ubuntu-latest
    needs: build

    steps:
      - uses: actions/checkout@v4

      - name: Install dependencies
        run: |
          sudo apt update
          sudo apt install -y build-essential
          sudo apt-get install -y \
            libpango1.0-dev \
            libcairo2-dev \
            libatk1.0-dev \
            libgtk-4-dev \
            libsoup2.4-dev

      - name: Set up dependencies
        run: |
          export SYSTEM_DEPS_PANGO_NO_PKG_CONFIG="true"
          export SYSTEM_DEPS_PANGO_LIB="pango-1.0"

      - name: Run cargo clippy
        run: |
          cargo clippy -- -Dwarnings
          cargo clippy --release -- -Dwarnings

      - name: Run cargo fmt
        run: cargo fmt --all --check
