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'
    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: Install Qt
        uses: jurplel/install-qt-action@v2
        with:
          version: '5.15.0'
          target: 'desktop'
          arch: 'win64_msvc2019_64'

      - name: Install Python
        uses: actions/setup-python@v1
        with:
          python-version: '3.x'

      - name: Install NSIS
        run: choco install --no-progress nsis -y

      - name: Install OpenSSL
        run: choco install --no-progress 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/*.zip windows

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

######################
#### Documentation ###
######################

  docs:
    name: Documentation
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: docs
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      # Install dependencies
      - name: Setup node 12
        uses: actions/setup-node@v1
        with:
          node-version: '12'

      # Build Docs
      - name: Build docs
        run: |
          npm install -g yarn
          yarn install
          yarn docs:build
