on:
  push:
    branches:
      - release
  pull_request:
    branches:
      - main
  workflow_dispatch:

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: maven
      - name: Build with Maven
        run: mvn -B package --file pom.xml
      - name: Upload artifact
        uses: actions/upload-artifact@v3
        with:
          name: packaged-jar
          path: target/*.jar
      - name: Set release tag
        id: set_release_tag
        run: echo "::set-output name=RELEASE_TAG::$(date +'%Y%m%d%H%M%S')"
      - name: Create extracted-jar directory
        run: mkdir extracted-jar
      - name: Download artifact
        uses: actions/download-artifact@v3
        with:
          name: packaged-jar
          path: extracted-jar
      - name: Get commit message and description
        id: get_commit_info
        run: |
          COMMIT_MSG=$(git log --format=%B -n 1 ${{ github.sha }})
          COMMIT_DESC=$(git show -s --format=%b ${{ github.sha }})
          echo "::set-output name=COMMIT_MSG::$COMMIT_MSG"
          echo "::set-output name=COMMIT_DESC::$COMMIT_DESC"
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ steps.set_release_tag.outputs.RELEASE_TAG }}
          release_name: ExtremeDemonList v${{ steps.set_release_tag.outputs.RELEASE_TAG }}
          body: ${{ steps.get_commit_info.outputs.COMMIT_DESC }}
          draft: false
          prerelease: false
      - name: Upload Artifact as Release Asset
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: extracted-jar/ExtremeDemonList-0.0.1-SNAPSHOT-jar-with-dependencies.jar
          asset_name: ExtremeDemonList-0.0.1-SNAPSHOT-jar-with-dependencies.jar
          asset_content_type: application/java-archive