name: Filechange Checker

on:
  workflow_call:
    outputs:
      srcfileschanged:
        description: "'true' if src/** or .github/workflows/** files have changed in the branch"
        value: ${{ jobs.file-change-check.outputs.srcfileschanged }}
      websitefileschanged:
        description: "'true' if websites/** or .github/workflows/** files have changed in the branch"
        value: ${{ jobs.file-change-check.outputs.websitefileschanged }}
      actionsfileschanged:
        description: "'true' if .github/actions/** or .github/workflows/** files have changed in the branch"
        value: ${{ jobs.file-change-check.outputs.actionsfileschanged }}

jobs:
  file-change-check:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
    outputs:
      srcfileschanged: ${{ steps.srcchecker.outputs.srcfileschanged }}
      websitefileschanged: ${{ steps.websitechecker.outputs.websitefileschanged }}
      actionsfileschanged: ${{ steps.actionschecker.outputs.actionsfileschanged }}
    steps:
      - uses: actions/checkout@v3

      # only run CI tests if the src folder or workflow actions have changed
      - name: Check for file changes in src/ or .github/workflows/
        uses: dorny/paths-filter@v2
        id: dornycheck
        with:
          list-files: json
          filters: |
            src:
              - 'src/**'
            website:
              - 'website/**'
            actions:
              - '.github/workflows/**'
              - '.github/actions/**'

      - name: Check dorny for changes in src filepaths
        id: srcchecker
        if: steps.dornycheck.outputs.src == 'true' || steps.dornycheck.outputs.actions == 'true'
        run: |
          echo "src or workflow file changes occurred"
          echo srcfileschanged=true >> $GITHUB_OUTPUT

      - name: Check dorny for changes in website related filepaths
        id: websitechecker
        if: steps.dornycheck.outputs.src == 'true' || steps.dornycheck.outputs.website == 'true' || steps.dornycheck.outputs.actions == 'true'
        run: |
          echo "website or workflow file changes occurred"
          echo websitefileschanged=true >> $GITHUB_OUTPUT

      - name: Check dorny for changes in actions filepaths
        id: actionschecker
        if: steps.dornycheck.outputs.actions == 'true'
        run: |
          echo "actions file changes occurred"
          echo actionsfileschanged=true >> $GITHUB_OUTPUT
