# Copyright © 2023 OpenIM. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Create Branch on Tag

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

jobs:
  create-branch:
    runs-on: ubuntu-latest
    steps:
    - name: Check out code
      uses: actions/checkout@v3
      with:
        fetch-depth: 0

    - name: Set up Git
      run: |
        git config --global user.name 'kubbot'
        git config --global user.email '3293172751yxy@gmail.com'

    - name: Install git-chglog
      run: make install.git-chglog

    - name: Create Branch
      run: |
        TAG_NAME=${GITHUB_REF/refs\/tags\//}
        IFS='.' read -ra VERSION_PARTS <<< "$TAG_NAME"
        if [[ "${VERSION_PARTS[2]}" = "0" ]]; then
          BRANCH_NAME="release-v${VERSION_PARTS[0]}.${VERSION_PARTS[1]}"
          echo "Creating branch $BRANCH_NAME"
          git checkout -b "$BRANCH_NAME"
          git push origin "$BRANCH_NAME"
        fi

    - name: Push Changes
      uses: stefanzweifel/git-auto-commit-action@v4
      with:
        commit_message: "Auto Commit CHANGELOG"
        branch: release-v${VERSION_PARTS[0]}.${VERSION_PARTS[1]}
      env:
        GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}

    - name: Create and Push CHANGELOG
      run: |
        git checkout main
        TAG_NAME=${GITHUB_REF/refs\/tags\//}
        IFS='.' read -ra VERSION_PARTS <<< "$TAG_NAME"
        if [[ "${VERSION_PARTS[2]}" = "0" ]]; then
          cd CHANGELOG
          git-chglog --tag-filter-pattern "v${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.*"  -o "CHANGELOG-${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.md"
          git add "CHANGELOG-${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.md"
          git commit -m "Update CHANGELOG for $TAG_NAME"
        fi

    - name: Push Changes
      uses: stefanzweifel/git-auto-commit-action@v4
      with:
        commit_message: "Auto Commit CHANGELOG"
        branch: main
      env:
        GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}