name: Release General

on:
  push:
    tags:
      - 'v[0-9]+.[0-9]+*'

permissions:
  contents: write

jobs:
  release:
    name: Build and upload release tarball
    if: startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Setting release variables ...
        id: build
        run: |
          ver=${GITHUB_REF#refs/tags/}
          echo "ver=${ver}" >> $GITHUB_OUTPUT
          if echo $ver | grep -qE '^v[0-9]+\.[0-9]+(\.[0-9]+)?(-alpha|-beta|-rc)[0-9]*$'; then
            echo "pre=true"  >> $GITHUB_OUTPUT
          else
            echo "pre=false" >> $GITHUB_OUTPUT
          fi
          if echo $ver | grep -qE '^v[0-9]+\.[0-9]+(\.[0-9]+)?$'; then
            echo "latest=true"  >> $GITHUB_OUTPUT
          else
            echo "latest=false" >> $GITHUB_OUTPUT
          fi
      - name: Install dependencies ...
        run: |
          sudo apt-get -y update
          sudo apt-get -y install tree libconfuse-dev libssl-dev zlib1g-dev php-cgi
      - name: Creating Makefiles ...
        run: |
          ./autogen.sh
          ./configure
      - name: Build release ...
        run: |
          make release
          mkdir -p artifacts/
          mv ../*.tar.* artifacts/
      - name: Extract ChangeLog entry ...
        run: |
          awk '/-----*/{if (x == 1) exit; x=1;next}x' ChangeLog.md \
              |head -n -1 > release.md
          cat release.md
      - uses: ncipollo/release-action@v1
        with:
          name: Merecat httpd ${{ github.ref_name }}
          prerelease: ${{ steps.build.outputs.pre }}
          makeLatest: ${{ steps.build.outputs.latest }}
          bodyFile: "release.md"
          artifacts: "artifacts/*"
