name: Test

on:
  push:
  pull_request:
  workflow_dispatch:

jobs:
#===================================#
#               JAVA                #
#===================================#
  gradle:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 8
        uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: '8'
      - name: Where is Java
        run: which java
#      - name: Grant execute permission for gradlew
#        run: chmod +x gradlew
#      - name: Build with Gradle
#        run: ./gradlew about installQuasar cleanFrontend assembleFrontend copyDist build --info
#      - name: List files in libs
#        run: ls -ahl build/libs
#      - uses: actions/upload-artifact@v2
#        with:
#          name: build-artifacts-gradle
#          path: build/libs/
#          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
#      - uses: actions/upload-artifact@v2
#        if: failure()
#        with:
#          name: gradle-report
#          path: build/reports/tests/test/
#          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
#
#===================================#
#              QUASAR               #
#===================================#
  quasar:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Node.js environment
        uses: actions/setup-node@v2.5.0
        with:
          # Version Spec of the version to use.  Examples: 12.x, 10.15.1, >=10.15.0
          node-version: '>= 16.13.1'
          # Set this option if you want the action to check for the latest available version that satisfies the version spec
          check-latest: false
#      - run: npm install -g @quasar/cli
#      - run: npm install
#      - run: quasar build
#      - run: pwd && ls -al *
#      - uses: actions/upload-artifact@v2
#        with:
#          name: build-artifacts
#          path: dist/spa/ # frontend/dist/spa if Gradle Spring Boot project for example
#          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
#
#===================================#
#              DOCKER               #
#===================================#
  docker:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Get branch name
        id: branch-name
        uses: tj-actions/branch-names@v5

      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: griefed
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
#      - name: Build and push
#        uses: docker/build-push-action@v2
#        with:
#          context: .
#          file: ./Dockerfile
#          build-args: BRANCH_OR_TAG=${{ steps.branch-name.outputs.current_branch }}
#          platforms: linux/amd64,linux/arm64 # Add linux/arm/v7 if applicable
#          push: true
#          tags: |
#            ghcr.io/griefed/REPOSITORY:${{ steps.branch-name.outputs.current_branch }}
#            ghcr.io/griefed/REPOSITORY:${{ steps.branch-name.outputs.current_branch }}-${{ github.sha }}
#            griefed/REPOSITORY:${{ steps.branch-name.outputs.current_branch }}
#            griefed/REPOSITORY:${{ steps.branch-name.outputs.current_branch }}-${{ github.sha }}
#===================================#
#             ELECTRON              #
#===================================#
  electron:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [macos-latest, ubuntu-latest, windows-latest]
    steps:
      - name: Checkout latest code
        uses: actions/checkout@master
        with:
          fetch-depth: 0

      - name: We are running on
        run: echo matrix.os is ${{ matrix.os }}
        # Either:
        #  1. macos-latest
        #  2. ubuntu-latest
        #  3. windows-latest
      - name: Setup Node.js environment
        uses: actions/setup-node@v2.5.0
        with:
          # Version Spec of the version to use.  Examples: 12.x, 10.15.1, >=10.15.0
          node-version: '>= 16.9.1'
          # Set this option if you want the action to check for the latest available version that satisfies the version spec
          check-latest: false

#      - name: Build/release Electron app
#        uses: vedaprakashms/quasar_electron_build@V0.0.1
#        with:
#          # GitHub token, automatically provided to the action
#          # (No need to define this secret in the repo settings)
#          github_token: ${{ secrets.github_token }}
#
#      - name: List files
#        run: ls dist/electron
#
#      - name: Rename folders
#        run: |
#          mv dist/electron/REPOSITORY* REPOSITORY-${{ matrix.os }}
#
#      # Electron Archives
#      - name: Create zip
#        uses: ihiroky/archive-action@v1
#        with:
#          root_dir: REPORITORY-${{ matrix.os }}
#          file_path: REPORITORY-app-${{ matrix.os }}.zip
#          verbose: true
#      - name: Create tar.gz
#        run: |
#          tar -cvzf REPOSITORY-app-${{ matrix.os }}-${{ needs.release.outputs.newtag }}.tar.gz REPOSITORY-${{ matrix.os }}
#
#      - name: List files
#        run: ls
#
#      - uses: actions/upload-artifact@v2
#        with:
#          name: electron-artifacts ${{ matrix.os }}
#          path: |
#            dist/electron/
#            !dist/electron/UnPackaged
#          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`