name: push
on: push
jobs:
  launcher:
    name: Launcher
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          submodules: recursive

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

      - name: Set up JDK 21
        uses: actions/setup-java@v4
        with:
          java-version: 21
          distribution: temurin

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

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

      - name: Generate and submit dependency graph
        uses: gradle/actions/dependency-submission@417ae3ccd767c252f5661f1ace9f835f9654f2b5

      - 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 ../../..
          cp ServerWrapper/build/libs/ServerWrapper.jar artifacts/ServerWrapper.jar
          cp LauncherAuthlib/build/libs/LauncherAuthlib.jar artifacts/LauncherAuthlib.jar || true
          cp modules/*_module/build/libs/*.jar artifacts/modules || true
          cp modules/*_lmodule/build/libs/*.jar artifacts/modules || true

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

      - name: Get version value, set to env
        if: startsWith(github.event.ref, 'refs/tags')
        run: echo "LAUNCHER_VERSION=$(echo ${{ github.event.ref }} | awk -F\/ '{print $3}')" >> $GITHUB_ENV

      - name: Prebuild release files
        if: startsWith(github.event.ref, 'refs/tags')
        run: |
          cd artifacts
          zip -r -9 Release.zip *
          zip -j -9 LaunchServerModules.zip ../modules/*_module/build/libs/*.jar
          zip -j -9 LauncherModules.zip ../modules/*_lmodule/build/libs/*.jar
          cd ../LaunchServer/build/libs
          zip -r -9 ../../../artifacts/LauncherBase.zip * -x "LaunchServer-clean.jar"

      - name: Create release
        id: create_release
        uses: softprops/action-gh-release@v2
        if: startsWith(github.event.ref, 'refs/tags')
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#       Список настроек тута: https://github.com/softprops/action-gh-release#-customizing
#       Можно сделать пуш описания релиза из файла
        with:
          name: GravitLauncher ${{ env.LAUNCHER_VERSION }}
          draft: false
          prerelease: false
          files: |
            artifacts/*