name: build-linux

on:
  push:
    branches:
      - master
  pull_request:

jobs:
  build:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 24
          cache: npm
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: sudo apt-get update && sudo apt-get install gcc-12 g++-12 libxtst-dev libpng++-dev -y
      - run: npm ci --loglevel verbose
      - run: npm run clean-prebuilds
      - run: npm run prebuild
        env:
          CC: gcc-12
          CXX: g++-12
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
      - run: npm run verify-prebuilds
      - name: retain pull request binaries
        if: github.event_name == 'pull_request'
        uses: actions/upload-artifact@v4
        with:
          name: prebuilds-linux-${{ github.sha }}
          path: prebuilds
      - name: upload release binaries
        if: github.event_name == 'push' && github.ref == 'refs/heads/master'
        uses: actions/github-script@v7
        with:
          script: |
            const zip = require('cross-zip')

            const script = require('./scripts/upload-binaries.js');

            await script({
              github,
              context,
              core,
              zip
            });
