name: Cygwin Build

on: [push, pull_request, workflow_dispatch]
concurrency:
  group: ci-${{github.workflow}}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    runs-on: 'windows-latest'

    steps:
      - uses: actions/checkout@v2
        with:
          submodules: 'recursive'
      - name: Install cygwin
        env:
          HOME: ${{ runner.workspace }}/ardupilot
        run: |
          choco install cygwin --params "/InstallDir:C:\Cygwin /NoStartMenu /NoAdmin"
          choco install cygwin32-gcc-g++ python37 python37-future python37-lxml python37-pip python37-setuptools python37-wheel git libexpat procps gettext --source cygwin
          C:\Cygwin\bin\bash --login -c "ln -sf /usr/bin/python3.7 /usr/bin/python && ln -sf /usr/bin/pip3.7 /usr/bin/pip"
          C:\Cygwin\bin\bash --login -c "python -m pip install empy pexpect"
          C:\Cygwin\bin\bash --login -c "python -m pip install dronecan --upgrade"
      - name: Build SITL
        env:
          HOME: ${{ runner.workspace }}/ardupilot
        run: |
          C:\Cygwin\bin\bash --login -c "Tools/scripts/cygwin_build.sh"

      - name: Check build files
        id: check_files
        uses: andstor/file-existence-action@v1
        with:
          files: "artifacts/ArduPlane.elf.exe, artifacts/ArduCopter.elf.exe, artifacts/ArduHeli.elf.exe, artifacts/ArduRover.elf.exe, artifacts/ArduSub.elf.exe"
          allow_failure: true

      - name: Archive build
        uses: actions/upload-artifact@v2
        with:
           name: binaries
           path: artifacts
           retention-days: 7
