name: Pre-Release LinUtil

permissions:
  contents: write # Grant write permissions to contents
  packages: write # Grant write permissions to packages

on:
  workflow_dispatch: # Manual trigger added
  workflow_run:
    workflows: ["LinUtil Release"] 
    types:
      - completed

jobs:
  build-runspace:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Extract Version
        id: extract_version
        run: |
          version=$(date +"%Y.%m.%d")
          echo "version=$version" >> $GITHUB_ENV
        shell: bash

      - name: Get Latest Release
        id: get_latest_release
        uses: octokit/request-action@v2.x
        with:
          route: GET /repos/{owner}/{repo}/releases/latest
          owner: ${{ github.repository_owner }}
          repo: ${{ github.event.repository.name }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        continue-on-error: true

      - name: Generate Release Notes
        id: generate_notes
        uses: release-drafter/release-drafter@v5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          config-name: release-drafter.yml
          version: ${{ env.version }}

      - name: Prepare Release Body
        id: prepare_body
        run: |
          latest_release_body="${{ fromJson(steps.get_latest_release.outputs.data).body }}"
          new_changes="${{ steps.generate_notes.outputs.body }}"
          if [[ -z "$latest_release_body" ]]; then
            echo "body<<EOF" >> $GITHUB_OUTPUT
            echo "$new_changes" >> $GITHUB_OUTPUT
            echo "EOF" >> $GITHUB_OUTPUT
          else
            echo "body<<EOF" >> $GITHUB_OUTPUT
            echo "$new_changes" >> $GITHUB_OUTPUT
            echo "" >> $GITHUB_OUTPUT
            echo "Previous Release Notes:" >> $GITHUB_OUTPUT
            echo "$latest_release_body" >> $GITHUB_OUTPUT
            echo "EOF" >> $GITHUB_OUTPUT
          fi

      - name: Create and Upload Release
        id: create_release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ env.version }}
          name: Pre-Release ${{ env.version }}
          body: |
            ${{ steps.prepare_body.outputs.body }}
            
            ![GitHub Downloads (specific asset, specific tag)](https://img.shields.io/github/downloads/ChrisTitusTech/linutil/${{ env.version }}/linutil)
          append_body: false
          files: |
            ./build/linutil
            ./start.sh
            ./startdev.sh
          prerelease: true
        env:
          version: ${{ env.version }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
