name: Release

on:
  push:
    tags:
      - 'v*.*.*'

permissions:
  contents: write

jobs:
  release:
    name: Create GitHub Release
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Extract version from tag
        id: version
        run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT

      - name: Extract changelog for this version
        id: changelog
        env:
          VERSION: ${{ steps.version.outputs.VERSION }}
        run: |
          # CHANGELOG.md에서 해당 버전 섹션 추출 (마지막 섹션이어도 내용 유지)
          awk -v ver="$VERSION" '$0 ~ "^## \\[" ver "\\]" {found=1; next} found && /^## \[/ {exit} found {print}' CHANGELOG.md > release_notes.txt
          echo "NOTES<<EOF" >> $GITHUB_OUTPUT
          cat release_notes.txt >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: Create release archive
        env:
          VERSION: ${{ steps.version.outputs.VERSION }}
        run: |
          mkdir -p release-package
          cp -r dist release-package/
          cp config.example.json release-package/
          cp README.md release-package/
          cp CHANGELOG.md release-package/
          cp LICENSE release-package/
          cd release-package
          zip -r "../moduweb-v$VERSION.zip" .
          cd ..
          tar -czf "moduweb-v$VERSION.tar.gz" -C release-package .

      - name: Create GitHub Release
        uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2.6.2
        with:
          name: "ModuWeb v${{ steps.version.outputs.VERSION }}"
          body: ${{ steps.changelog.outputs.NOTES }}
          files: |
            moduweb-v${{ steps.version.outputs.VERSION }}.zip
            moduweb-v${{ steps.version.outputs.VERSION }}.tar.gz
          draft: false
          prerelease: ${{ contains(github.ref, '-beta') || contains(github.ref, '-alpha') || contains(github.ref, '-rc') }}
