name: CI Publish

on:
  push:
    tags:
      - 'v*'

jobs:
  check_wrapper:
    name: Validate Gradle Wrapper
    runs-on: ubuntu-latest

    steps:
      - name: Clone repo
        uses: actions/checkout@v2

      - name: Validate Gradle Wrapper
        uses: gradle/wrapper-validation-action@v1

  build:
    name: Build artifacts and release
    needs: check_wrapper
    runs-on: ubuntu-latest

    steps:
      - name: Cancel previous runs
        uses: styfle/cancel-workflow-action@0.9.0
        with:
          access_token: ${{ github.token }}

      - name: Checkout ${{ github.ref }}
        uses: actions/checkout@v2
        with:
          ref: ${{ github.ref }}
          path: master
          fetch-depth: 0

      - name: Set up JDK 1.8
        uses: actions/setup-java@v1
        with:
          java-version: 1.8

      - name: Copy CI gradle.properties
        run: |
          cd master
          mkdir -p ~/.gradle
          cp .github/runner-files/ci-gradle.properties ~/.gradle/gradle.properties

      - name: Download android.jar
        run: |
          cd master
          curl https://raw.githubusercontent.com/Suwayomi/Tachidesk/android-jar/android.jar -o AndroidCompat/lib/android.jar

      - name: Build and copy webUI, Build Jar
        uses: eskatos/gradle-command-action@v1
        env:
          ProductBuildType: "Stable"
        with:
          build-root-directory: master
          wrapper-directory: master
          arguments: :server:downloadWebUI :server:shadowJar --stacktrace
          wrapper-cache-enabled: true
          dependencies-cache-enabled: true
          configuration-cache-enabled: true

      - name: make bundle packages
        run: |
          cd master/scripts
          ./windows-bundler.sh win32
          ./windows-bundler.sh win64
          ./unix-bundler.sh linux-x64
          ./unix-bundler.sh macOS-x64
          ./unix-bundler.sh macOS-arm64

      - name: Upload Release
        uses: xresloader/upload-to-github-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          file: "master/server/build/*.jar;master/server/build/*.zip;master/server/build/*.tar.gz"
          tags: true
          draft: true
          verbose: true
