# this workflow checks CHANGELOG.md & CHANGELOG-SNAPSHOTS.md is updated correctly
# to skip this check, include `NO-CHANGELOG` for CHANGELOG.md
# and `NO-CHANGELOG-PRERELEASE` for CHANGELOG-PRERELEASE.md in tags of PR.
# also, this action ignores `dependencies` pull requests (expected to be generated by dependabot)

name: CHANGELOG check

on:
  pull_request:
    branches: [ master, master-* ]
    types: [ opened, synchronize, reopened, ready_for_review, labeled, unlabeled ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  releasenote-check:
    if: ${{ ! github.event.pull_request.draft }}
    runs-on: ubuntu-latest

    env:
      NO_CHANGELOG: ${{
        contains(github.event.pull_request.labels.*.name, 'NO-CHANGELOG')
        || contains(github.event.pull_request.labels.*.name, 'documentation')
        || contains(github.event.pull_request.labels.*.name, 'localization')
        || contains(github.event.pull_request.labels.*.name, 'ci')
        || contains(github.event.pull_request.labels.*.name, 'refactor')
        || github.event.pull_request.user.id == 49699333
        || '' }}
      # github.event.user.id == 49699333: dependabot
    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      - name: Fetch pull_request info
        env:
          GH_REPO: ${{ github.repositoryUrl }}
          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
          PR_NUM: ${{ github.event.number }}
        run: |
          gh pr view $PR_NUM --json=files | jq --raw-output '.files[].path' > files.txt
      - name: Changelog check for CHANGELOG.md
        if: always() && !env.NO_CHANGELOG
        run: |
          if ! grep -Ee '^CHANGELOG.md$|^CHANGELOG-gui.md$' < files.txt > /dev/null; then
            echo "::error::CHANGELOG.md is not updated"
            exit 1
          fi
