name: Check TODOs and FIXMEs in Changed Files

on:
  pull_request:
    branches:
      - master
      - 'dev/*'
      - 'rel/*'
      - "rc/*"
      - 'force_ci/**'
    paths-ignore:
      - 'docs/**'
      - 'site/**'
  # allow manually run the action:
  workflow_dispatch:

jobs:
  todo-check:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Check for TODOs and FIXMEs in changed files
        run: |
          # Fetch the target branch
          git fetch origin $GITHUB_BASE_REF
          
          git switch -c check_branch
          
          # Get the diff of the changes
          echo Get the diff of the changes
          DIFF=$(git diff origin/$GITHUB_BASE_REF check_branch  -- . ':(exclude).github/workflows/todos-check.yml')
          
          if [ -z "$DIFF" ]; then
            echo "No changes detected."
            exit 0
          fi
          
          
          # Check the diff for TODOs
          
           # Check the diff for TODOs
          echo Check the diff for TODOs
          TODOsCOUNT=$(echo "$DIFF" | grep -E '^\+.*(TODO|FIXME)' | wc -l)
          if [ "$TODOsCOUNT" -eq 0 ]; then
            echo "No TODOs or FIXMEs found in changed content.";
            exit 0
          fi
          
          echo "TODO or FIXME found in the changes. Please resolve it before merging."
          echo "$DIFF" | grep -E '^\+.*(TODO|FIXME)' | tee -a output.log
          exit 1
