name: main

on:
  push:
  pull_request:

jobs:
  build:
    if: ${{ github.repository != 'msys2/MINGW-packages' || github.event_name != 'push' || github.ref != 'refs/heads/master'}}
    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        include: [
          { msystem: MINGW64, toolchain: mingw-w64-x86_64-toolchain, can-fail: false },
          { msystem: MINGW32, toolchain: mingw-w64-i686-toolchain, can-fail: false },
          { msystem: UCRT64, toolchain: mingw-w64-ucrt-x86_64-toolchain, can-fail: false },
          { msystem: CLANG64, toolchain: mingw-w64-clang-x86_64-toolchain, can-fail: true },
          { msystem: CLANG32, toolchain: '', can-fail: true }
        ]
    name: ${{ matrix.msystem }}
    steps:
      - uses: actions/checkout@v2
        with:
          path: temp
          fetch-depth: 0

      # to match the autobuild environment
      - uses: actions/setup-python@v2
        with:
          python-version: '3.8'

      - uses: msys2/setup-msys2@v2
        with:
          msystem: MSYS
          install: git msys2-devel base-devel binutils pactoys-git ${{ matrix.toolchain }}
          update: true

      - name: Add staging repo
        shell: msys2 {0}
        run: |
          sed -i '1s|^|[staging]\nServer = https://repo.msys2.org/staging/\nSigLevel = Never\n[clang32]\nInclude = /etc/pacman.d/mirrorlist.clang32\n|' /etc/pacman.conf

      - name: Update using staging
        run: |
          msys2 -c 'pacman --noconfirm -Suuy'
          msys2 -c 'pacman --noconfirm -Suu'

      - name: Install clang32 toolchain
        if: ${{ matrix.msystem == 'CLANG32' }}
        run: |
          msys2 -c 'pacman --noconfirm --overwrite "*" -S --needed mingw-w64-clang-i686-toolchain'

      - name: Move Checkout
        run: |
          Copy-Item -Path ".\temp" -Destination "C:\_" -Recurse

      - name: CI-Build
        shell: msys2 {0}
        continue-on-error: ${{ matrix.can-fail }}
        id: build
        run: |
          cd /C/_
          MINGW_ARCH=${{ matrix.msystem }} ./.ci/ci-build.sh

      - name: "Upload binaries"
        uses: actions/upload-artifact@v2
        continue-on-error: ${{ matrix.can-fail }}
        with:
          name: ${{ matrix.msystem }}-packages
          path: C:/_/artifacts/*.pkg.tar.*
  check:
    needs: [build]
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/download-artifact@v2
        continue-on-error: true
        with:
          name: MINGW64-packages
          path: C:/_/artifacts
      - name: Check whether to Run
        id: check-run
        run: |
          python .ci/ci-check.py --whether-to-run
      - uses: msys2/setup-msys2@v2
        if: steps.check-run.outputs.run == 'true'
        with:
          msystem: MINGW64
          install: mingw-w64-x86_64-python-pip
          release: false # since we aren't building anything
      - name: Run Checks
        if: steps.check-run.outputs.run == 'true'
        shell: msys2 {0}
        run: |
          python .ci/ci-check.py
