name: ✅ Standards Check

on:
  push:
  pull_request:
  workflow_dispatch:  # 允许手动触发

concurrency:
  group: standards-${{ github.repository }}-${{ github.ref }}
  cancel-in-progress: true

# ==========================================
# 🔧 配置区域 - 标准校验参数
# ==========================================
env:
  COMMIT_LINT_REQUIRE_EMOJI: "1"
  WORKSPACE_DIR: "/home/workspace"

jobs:
  commit-message:
    name: 🔍 Commit message lint
    runs-on: ubuntu-22.04

    steps:
      - name: 📥 准备仓库
        run: |
          echo "========================================"
          echo "📥 准备仓库到 WORKSPACE_DIR"
          echo "========================================"

          REPO_NAME="${{ github.event.repository.name }}"
          TOKEN="${{ secrets.WORKFLOW }}"
          mkdir -p "${{ env.WORKSPACE_DIR }}"
          REPO_DIR="$(mktemp -d "${{ env.WORKSPACE_DIR }}/${REPO_NAME}.XXXXXX")"
          if [ -n "$TOKEN" ]; then
            REPO_URL="https://oauth2:${TOKEN}@${GITHUB_SERVER_URL#https://}/${{ github.repository }}.git"
          else
            REPO_URL="${GITHUB_SERVER_URL}/${{ github.repository }}.git"
          fi

          git clone "$REPO_URL" "$REPO_DIR"

          TARGET_SHA="${{ github.sha }}"
          TARGET_REF="${{ github.ref }}"
          if git -C "$REPO_DIR" cat-file -e "$TARGET_SHA^{commit}" 2>/dev/null; then
            git -C "$REPO_DIR" checkout -f "$TARGET_SHA"
          else
            if [ -n "$TARGET_REF" ]; then
              git -C "$REPO_DIR" fetch origin "$TARGET_REF"
              git -C "$REPO_DIR" checkout -f FETCH_HEAD
            else
              git -C "$REPO_DIR" checkout -f "${{ github.ref_name }}"
            fi
          fi

          git config --global --add safe.directory "$REPO_DIR"
          echo "REPO_DIR=$REPO_DIR" >> "$GITHUB_ENV"
      - name: 🧪 Lint commit message / PR title
        run: |
          cd "$REPO_DIR"
          python3 .gitea/ci/commit_message_lint.py

      - name: 🧹 清理临时仓库
        if: always()
        run: |
          rm -rf "$REPO_DIR"
