on:
  push:
    # Sequence of patterns matched against refs/tags
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

name: Create Release
permissions: write-all

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18

      - name: Install dependencies
        run: npm install -g gen-git-log

      - name: Find Last Tag
        id: last_tag
        run: |
          
          # 获取所有标签,按版本排序(降序)  
          Tags=$(git tag --list --sort=-version:refname)  
          
          # 获取最新的标签(即列表中的第一个)  
          LATEST_TAG=$(echo "$Tags" | awk 'NR==1 {print $1; exit}')  
          
          # 获取倒数第二个标签(如果存在)  
          if [[ -n "$Tags" ]]; then  
            # 使用 tail 获取除了最后一个标签之外的所有标签,然后用 head 获取第一个  
            SECOND_LATEST_TAG=$(echo "$Tags" | tail -n +2 | head -n 1)  
          else  
            SECOND_LATEST_TAG=""  
          fi
          
          # 设置输出变量  
          echo "::set-output name=tag_last::${LATEST_TAG:-v1.0.0}"
          echo "::set-output name=tag_second::${SECOND_LATEST_TAG:-v1.0.0}"

      - name: Generate Release Notes
        run: |
          rm -rf log
          newTag=${{ steps.last_tag.outputs.tag_last }}
          git-log -m tag -f -S ${{ steps.last_tag.outputs.tag_second }} -v ${newTag#v}

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ steps.last_tag.outputs.tag_last }}
          release_name: Release ${{ steps.last_tag.outputs.tag_last }}
          body_path: log/${{steps.last_tag.outputs.tag_last}}.md
          draft: false
          prerelease: false