# This workflow validates basic pull request formatting requirements are met.
#
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: BSD-2-Clause-Patent
#

name: Validate Pull Request Formatting

on:
  pull_request_target:
    branches:
      - master
    types:
      - edited
      - opened
      - reopened
      - synchronize

concurrency:
  group: pr-validation-${{ github.event.number }}
  cancel-in-progress: true

jobs:
  validate_pr:
    name: Validate Pull Request Formatting
    # Do not run on draft PRs and only run on PRs in the tianocore org
    if: ${{ github.event.pull_request.draft == false && github.repository_owner == 'tianocore' }}
    runs-on: ubuntu-latest

    steps:
      - name: Generate Token
        id: app-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ secrets.TIANOCORE_PR_AUTOMATION_APPLICATION_ID }}
          private-key: ${{ secrets.TIANOCORE_PR_AUTOMATION_APPLICATION_PRIVATE_KEY }}

      # Reduce checkout time with sparse-checkout
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1
          sparse-checkout: |
            .github/scripts/

      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.x'
          cache: 'pip'
          cache-dependency-path: '.github/scripts/requirements.txt'

      - name: Install PIP Modules
        run: pip install -r .github/scripts/requirements.txt

      - name: Validate PR Format
        id: validate
        run: python .github/scripts/validate_pr_formatting.py
        env:
          GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
          OWNER: ${{ github.repository_owner }}
          PR_NUMBER: ${{ github.event.number }}
          REPO: ${{ github.event.pull_request.base.repo.name }}

      - name: Post Validation Comment
        if: steps.validate.outputs.validation_error == 'true'
        run: python .github/scripts/validate_pr_formatting.py --post-comment
        env:
          GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
          PR_NUMBER: ${{ github.event.number }}

      - name: Check for Validation Errors
        if: steps.validate.outputs.validation_error == 'true'
        uses: actions/github-script@v7
        with:
          script: |
            core.setFailed('PR Formatting Validation Check Failed!')
