name: Release Notes

on:
  pull_request:
    types: [assigned, opened, synchronize, reopened, edited]
env:
  CURRENT_RELEASE_FILE_PATH: packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
jobs:
  release-preparedness:
    runs-on: ubuntu-latest
    name: Verify PR Release Note Requirements
    steps:
      - name: Get Pull Request Number
        id: get-pull-request-number
        run: |
          PULL_REQUEST_NUMBER=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH")
          echo "PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" >> $GITHUB_OUTPUT

      - name: Check if we have modified release note file
        id: get-modified-files
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PULL_NUMBER: ${{steps.get-pull-request-number.outputs.PULL_REQUEST_NUMBER}}
        run: |
          FILES_RESPONSE=$(gh api /repos/$GITHUB_REPOSITORY/pulls/$PULL_NUMBER/files)
          echo "FILES_RESPONSE: $FILES_RESPONSE"

          HAS_CHANGED_RELEASE_NOTES=$(echo $FILES_RESPONSE | jq '.[].filename' | jq -s '. | any(. == env.CURRENT_RELEASE_FILE_PATH)')
          echo "HAS_CHANGED_RELEASE_NOTES=$HAS_CHANGED_RELEASE_NOTES" >> $GITHUB_OUTPUT

      - name: Get PR Info
        id: check-release-note-exceptions
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PULL_NUMBER: ${{steps.get-pull-request-number.outputs.PULL_REQUEST_NUMBER}}
        run: |
          PULLS_RESPONSE=$(gh api /repos/$GITHUB_REPOSITORY/pulls/$PULL_NUMBER)
          DESCRIPTION_BODY=$(echo $PULLS_RESPONSE | jq '.body')
          AUTHOR_ID=$(echo $PULLS_RESPONSE | jq -r '.user.login')

          sudo apt-get install pandoc

          BODY_WITHOUT_COMMENTS=$(printf "$DESCRIPTION_BODY" | pandoc --strip-comments -f markdown -t plain)
          echo $DESCRIPTION_BODY
          echo $BODY_WITHOUT_COMMENTS
          echo $AUTHOR_ID

          if $(echo $BODY_WITHOUT_COMMENTS | grep -Eq "RELEASE_NOTE_EXCEPTION="); then
            HAS_RELEASE_NOTE_EXCEPTION_STRING=true
          else
            HAS_RELEASE_NOTE_EXCEPTION_STRING=false
          fi

          if [[ "$AUTHOR_ID" == "dependabot[bot]" ]] ; then
            IS_DEPENDABOT_PR=true
          else
            IS_DEPENDABOT_PR=false
          fi

          echo "HAS_RELEASE_NOTE_EXCEPTION_STRING=$HAS_RELEASE_NOTE_EXCEPTION_STRING" >> $GITHUB_OUTPUT
          echo "IS_DEPENDABOT_PR=$IS_DEPENDABOT_PR" >> $GITHUB_OUTPUT

      - name: Check Release Preparedness requirements
        env:
          HAS_CHANGED_RELEASE_NOTES: ${{steps.get-modified-files.outputs.HAS_CHANGED_RELEASE_NOTES}}
          HAS_RELEASE_NOTE_EXCEPTION_STRING: ${{steps.check-release-note-exceptions.outputs.HAS_RELEASE_NOTE_EXCEPTION_STRING}}
          IS_DEPENDABOT_PR: ${{steps.check-release-note-exceptions.outputs.IS_DEPENDABOT_PR}}
        run: |
          if [ "$HAS_CHANGED_RELEASE_NOTES" != "true" ] && [ "$HAS_RELEASE_NOTE_EXCEPTION_STRING" != "true" ] && [ "$IS_DEPENDABOT_PR" != "true" ] ; then
            echo "Release Preparedness check failed"
            echo "::error title='Release Notes were not modified'::Please add a release note entry to $CURRENT_RELEASE_FILE_PATH or an exception reason to your description using: \`RELEASE_NOTE_EXCEPTION=[reason goes here]\`"
            exit 1
          fi
