name: Build Check

on:
  pull_request:
    branches: [ main ]
    paths:
      - 'src-tauri/**'
  push:
    branches: [ main ]
    paths:
      - 'src-tauri/**'

env:
  CARGO_TERM_COLOR: always
  CARGO_INCREMENTAL: 1
  CARGO_NET_RETRY: 10
  RUSTUP_MAX_RETRIES: 10
  RUST_BACKTRACE: 1
  RUSTC_WRAPPER: sccache
  CARGO_BUILD_JOBS: 2

jobs:
  build:
    name: Build Check
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 'lts/*'
          cache: 'npm'
          
      - name: Cache Linux Dependencies
        id: cache-apt
        uses: actions/cache@v3
        with:
          path: |
            /var/cache/apt/archives/*.deb
            /var/lib/apt/lists/*
          key: ${{ runner.os }}-apt-${{ hashFiles('**/package.json', '**/Cargo.lock') }}
          restore-keys: |
            ${{ runner.os }}-apt-

      - name: Install Linux Dependencies
        run: |
          sudo rm -rf /var/cache/apt/archives/lock
          sudo rm -rf /var/cache/apt/archives/partial
          sudo rm -rf /var/lib/apt/lists/lock
          sudo rm -rf /var/lib/apt/lists/partial
          sudo apt-get update
          sudo apt-get install --no-install-recommends -y \
            build-essential \
            pkg-config \
            libgtk-3-dev \
            libayatana-appindicator3-dev \
            librsvg2-dev \
            libglib2.0-dev \
            libjavascriptcoregtk-4.0-dev \
            libsoup-3.0-dev \
            libwebkit2gtk-4.1-dev

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: cargo
          target: x86_64-unknown-linux-gnu

      - name: Install sccache
        run: |
          SCCACHE_VERSION=v0.7.7
          curl -L "https://github.com/mozilla/sccache/releases/download/${SCCACHE_VERSION}/sccache-${SCCACHE_VERSION}-x86_64-unknown-linux-musl.tar.gz" | tar xz
          sudo mv sccache-*/sccache /usr/local/bin/sccache
          echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV

      - uses: Swatinem/rust-cache@v2
        with:
          workspaces: "./src-tauri -> target"
          shared-key: "build"
          
      - name: Install Dependencies
        run: npm ci
        
      - name: Build Application
        run: |
          npm run tauri build -- \
            --target x86_64-unknown-linux-gnu \
            --bundles deb \
            --ci