name: Create Release

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          username: ${{ secrets.CI_USER }}
          password: ${{ secrets.CI_TOKEN }}
          fetch-depth: 0  # Important: Fetch all history for commit messages

      - name: Get version
        id: get_version
        run: |
          if [ "${{ github.ref_type }}" = "tag" ]; then
            echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
          else
            echo "version=$(date +'%Y.%m.%d-%H%M')" >> $GITHUB_OUTPUT
          fi

      - name: Generate release notes
        id: release_notes
        run: |
          # Find the most recent tag
          LATEST_TAG=$(git describe --tags --abbrev=0 --always 2>/dev/null || echo "none")
          
          if [ "$LATEST_TAG" = "none" ]; then
            # If no previous tag exists, get all commits
            COMMITS=$(git log --pretty=format:"* %s (%h)" --no-merges)
          else
            # Get commits since the last tag
            COMMITS=$(git log --pretty=format:"* %s (%h)" ${LATEST_TAG}..HEAD --no-merges)
          fi
          
          # Create release notes with header (without encoding newlines)
          echo "notes<<EOF" >> $GITHUB_OUTPUT
          echo "## What's New in ${{ steps.get_version.outputs.version }}" >> $GITHUB_OUTPUT
          echo "" >> $GITHUB_OUTPUT
          echo "$COMMITS" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: Update plugin version
        run: |
          # Replace version placeholder in plugin header
          sed -i "s/Version: .*/Version: ${{ steps.get_version.outputs.version }}/" wp-digital-download.php
          # Replace version placeholder in PHP constant
          sed -i "s/define('WPDD_VERSION', '[^']*');/define('WPDD_VERSION', '${{ steps.get_version.outputs.version }}');/" wp-digital-download.php
          # Verify the changes were made
          echo "Plugin header version:"
          grep "Version:" wp-digital-download.php
          echo "PHP constant version:"
          grep "WPDD_VERSION" wp-digital-download.php

      - name: Create ZIP archive
        run: |
          # Create a temp directory with the correct plugin folder name
          mkdir -p /tmp/wp-digital-download

          # Copy files to the temp directory (excluding git and other unnecessary files)
          cp -r * /tmp/wp-digital-download/ 2>/dev/null || true

          # Exclude .git, .gitea, and .playwright-mcp directories
          rm -rf /tmp/wp-digital-download/.git /tmp/wp-digital-download/.gitea /tmp/wp-digital-download/.playwright-mcp 2>/dev/null || true

          # Create the ZIP file with the proper structure
          cd /tmp
          zip -r $GITHUB_WORKSPACE/wp-digital-download.zip wp-digital-download

      - name: Create Release
        uses: softprops/action-gh-release@v2
        with:
          token: "${{ secrets.REPO_TOKEN }}"
          title: "WP Digital Download Release ${{ steps.get_version.outputs.version }}"
          tag_name: ${{ steps.get_version.outputs.version }}
          body: "${{ steps.release_notes.outputs.notes }}"
          files: |
            wp-digital-download.zip