name: Hyperion PR Build
on:
  pull_request:
    branches:
      - master

jobs:

######################
###### Linux #########
######################

  Linux:
    name: ${{ matrix.dockerName }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        dockerImage: [ x86_64, armv6l, armv7l, aarch64 ]
        include:
          - dockerImage: x86_64
            dockerName: Debian Stretch (x86_64)
            platform: x11
          - dockerImage: armv6l
            dockerName: Debian Stretch (Raspberry Pi v1 & ZERO)
            platform: rpi
          - dockerImage: armv7l
            dockerName: Debian Stretch (Raspberry Pi 2 & 3)
            platform: rpi
          - dockerImage: aarch64
            dockerName: Debian Stretch (Generic AARCH64)
            platform: amlogic

    steps:
      - name: Checkout
        uses: actions/checkout@v1
        with:
          submodules: true

      # Append PR number to version
      - name: Append PR number to version
        shell: bash
        run: |
          tr -d '\n' < version > temp && mv temp version
          echo -n -PR#${{ github.event.pull_request.number }} >> version

      # Build packages
      - name: Build packages
        env:
          DOCKER_IMAGE: ${{ matrix.dockerImage }}
          DOCKER_TAG: stretch
          DOCKER_NAME: ${{ matrix.dockerName }}
          PLATFORM: ${{ matrix.platform }}
        shell: bash
        run: ./.ci/ci_build.sh

      # Collecting deployable artifacts
      - name: Collecting deployable artifacts
        shell: bash
        run: |
          mkdir -p ${{ matrix.dockerImage }}
          mv deploy/*.tar.gz ${{ matrix.dockerImage }}
        if: matrix.dockerImage != 'aarch64'

      # Upload artifacts
      - name: Upload artifacts
        uses: actions/upload-artifact@v1
        with:
          name: ${{ matrix.dockerImage }}
          path: ${{ matrix.dockerImage }}
        if: matrix.dockerImage != 'aarch64'

######################
###### macOS #########
######################

  macOS:
    name: macOS
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1
        with:
          submodules: true

      # Append PR number to version
      - name: Append PR number to version
        shell: bash
        run: |
          tr -d '\n' < version > temp && mv temp version
          echo -n "-PR#${{ github.event.pull_request.number }}" >> version

      # Install dependencies
      - name: Install dependencies
        shell: bash
        run: ./.ci/ci_install.sh

      # Build packages
      - name: Build packages
        env:
          PLATFORM: osx
        shell: bash
        run: ./.ci/ci_build.sh

      # Collecting deployable artifacts
      - name: Collecting deployable artifacts
        shell: bash
        run: |
          mkdir -p macOS
          mv build/*.tar.gz macOS

      # Upload artifacts
      - name: Upload artifacts
        uses: actions/upload-artifact@v1
        with:
          name: macOS
          path: macOS

######################
###### Windows #######
######################

  windows:
    name: Windows
    runs-on: windows-latest
    env:
      VCINSTALLDIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC'
      QT_VERSION: 5.15.0
    steps:
      - name: Checkout
        uses: actions/checkout@v1
        with:
          submodules: true

      # Append PR number to version
      - name: Append PR number to version
        shell: bash
        run: |
          tr -d '\n' < version > temp && mv temp version
          echo -n "-PR#${{ github.event.pull_request.number }}" >> version

      - name: Cache Qt
        uses: actions/cache@v2
        id: cache-qt-windows
        with:
          path: ${{ runner.workspace }}/Qt
          key: ${{ runner.os }}-Qt.${{ env.QT_VERSION }}

      - name: Install Qt
        uses: jurplel/install-qt-action@v2
        with:
          version: ${{env.QT_VERSION}}
          target: 'desktop'
          arch: 'win64_msvc2019_64'
          cached: ${{ steps.cache-qt-windows.outputs.cache-hit }}

      - name: Cache Chocolatey downloads
        uses: actions/cache@v2
        with:
          path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
          key: ${{ runner.os }}-chocolatey

      - name: Install Python, NSIS, OpenSSL
        shell: powershell
        run: |
          choco install --no-progress python nsis openssl -y

      - name: Set up x64 build architecture environment
        shell: cmd
        run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"

      # Build packages
      - name: Build packages
        env:
          PLATFORM: windows
        shell: bash
        run: ./.ci/ci_build.sh

      # Collecting deployable artifacts
      - name: Collecting deployable artifacts
        shell: bash
        run: |
          mkdir -p windows
          mv build/*.exe windows

      # Upload artifacts
      - name: Upload artifacts
        uses: actions/upload-artifact@v1
        with:
          name: windows
          path: windows