# 当分支 main 有 push 事件，并且此次 push 包含了 packages/stdf/package.json 文件时，执行以下任务

name: RELEASES

on:
    push:
        branches:
            - main
        paths:
            - 'packages/stdf/package.json'

jobs:
    releases:
        runs-on: ubuntu-latest

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

            # 1. 读取 packages/stdf/package.json 中的 version 字段，作为 Releases tag 和 Releases title
            - name: Get version
              id: version
              run: |
                  echo version=$(cat packages/stdf/package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]') >> $GITHUB_OUTPUT

            # 2. 读取 doc/guide/changelog.md 的第一行内容，去除 ## 和空格
            - name: Get md_version
              id: md_version
              run: |
                  echo md_version=$(cat doc/guide/changelog.md | head -1 | sed 's/## //g' | tr -d '[[:space:]]') >> $GITHUB_OUTPUT

            # 3. 读取 doc/guide/changelog_en.md 的第一行内容，去除 ## 和空格
            - name: Get md_version_en
              id: md_version_en
              run: |
                  echo md_version_en=$(cat doc/guide/changelog_en.md | head -1 | sed 's/## //g' | tr -d '[[:space:]]') >> $GITHUB_OUTPUT

            # 4. 比较 Get version 与 Get md_version 和 Get md_version_en 三者的输出内容，如果不相同则此次不需要发布 Release，退出
            - name: Check version
              run: |
                  if [[ ${{ steps.version.outputs.version }} != ${{ steps.md_version.outputs.md_version }} ]]; then
                      echo "This is not a tag push. Skipping."
                      exit 78
                  fi
                  if [[ ${{ steps.version.outputs.version }} != ${{ steps.md_version_en.outputs.md_version_en }} ]]; then
                      echo "This is not a tag push. Skipping."
                      exit 78
                  fi

            # 5. 读取 doc/guide/changelog.md 中前两个二级标题之间的内容，包含换行和空格
            - name: Get changelog
              id: changelog
              run: |
                  echo -e changelog=$(sed -n '1,/##/{/##/!p;}' doc/guide/changelog.md | sed '/^$/d') >> $GITHUB_OUTPUT

            # 6. 读取 doc/guide/changelog_en.md 中第一个二级标题与第二个二级标题之间的内容，包含换行和空格
            - name: Get changelog_en
              id: changelog_en
              run: |
                  echo -e changelog_en=$(sed -n '1,/##/{/##/!p;}' doc/guide/changelog_en.md | sed '/^$/d') >> $GITHUB_OUTPUT

            # 7. 作为 latest release 发布本次 Release，body 为 changelog 和 changelog_en 的合并内容，中间使用 --- 分隔
            - name: Release
              uses: actions/create-release@v1
              env:
                  GITHUB_TOKEN: ${{ secrets.STDF_GITHUB_TOKEN }}
              with:
                  tag_name: v${{ steps.version.outputs.version }}
                  release_name: v${{ steps.version.outputs.version }}
                  body: |
                      ${{ steps.changelog.outputs.changelog }}
                      ---
                      ${{ steps.changelog_en.outputs.changelog_en }}
                  draft: false
                  prerelease: false
