name: push
on:
  push:
  create:
    tags:
      - v*
jobs:
  launcher:
    name: Launcher
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          submodules: recursive

      - name: Cache Gradle
        uses: actions/cache@v1
        with:
          path: ~/.gradle/caches
          key: gravit-${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}-launcher

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

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Build with Gradle
        run: ./gradlew build

      - name: Create artifacts
        run: |
          mkdir -p artifacts/modules
          cd LaunchServer/build/libs/
          zip -r -9 ../../../artifacts/libraries.zip * -x "LaunchServer.jar" -x "LaunchServer-clean.jar"
          cp LaunchServer.jar ../../../artifacts/LaunchServer.jar
          cd ../../../ServerWrapper/build/libs
          cp ServerWrapper.jar ../../../artifacts/ServerWrapper.jar
          cd ../../../LauncherAuthlib/build/libs
          cp LauncherAuthlib.jar ../../../artifacts/LauncherAuthlib.jar
          cd ../../../
          cp modules/*_module/build/libs/*.jar artifacts/modules
          cp modules/*_swmodule/build/libs/*.jar artifacts/modules
          cp modules/*_lmodule/build/libs/*.jar artifacts/modules

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

      - name: Create release
        id: create_release
        uses: actions/create-release@v1
        if: github.event_name == 'create'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: GravitLauncher ${{ github.ref }}
          draft: false
          prerelease: false

      - name: Pack release
        if: github.event_name == 'create'
        run: |
          cd artifacts/
          zip -r -9 ../Release.zip *

      - name: Upload release
        if: github.event_name == 'create'
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./Release.zip
          asset_name: Release.zip
          asset_content_type: application/zip