#!/usr/bin/env bash
# meowkit-diff-scope — categorize what changed in the diff against a base branch
# Adapted from gstack-diff-scope for MeowKit. No external dependencies.
# Usage: eval "$(meowkit-diff-scope main)" → sets SCOPE_* variables
set -euo pipefail

BASE="${1:-main}"
FILES=$(git diff "${BASE}...HEAD" --name-only 2>/dev/null || git diff "${BASE}" --name-only 2>/dev/null || echo "")

FRONTEND=false; BACKEND=false; PROMPTS=false; TESTS=false; DOCS=false; CONFIG=false

while IFS= read -r f; do
  [ -z "$f" ] && continue
  case "$f" in
    *.css|*.scss|*.less|*.tsx|*.jsx|*.vue|*.svelte|*.html) FRONTEND=true ;;
    tailwind.config.*|postcss.config.*|*/components/*|styles/*) FRONTEND=true ;;
    *.test.*|*.spec.*|*_test.*|*_spec.*|test/*|tests/*|__tests__/*) TESTS=true ;;
    *.md) DOCS=true ;;
    package.json|*.lock|*.yml|*.yaml|.github/*|requirements.txt|go.mod) CONFIG=true ;;
    *.rb|*.py|*.go|*.rs|*.java|*.php|*.ts|*.js) BACKEND=true ;;
  esac
done <<< "$FILES"

echo "SCOPE_FRONTEND=$FRONTEND"
echo "SCOPE_BACKEND=$BACKEND"
echo "SCOPE_PROMPTS=$PROMPTS"
echo "SCOPE_TESTS=$TESTS"
echo "SCOPE_DOCS=$DOCS"
echo "SCOPE_CONFIG=$CONFIG"
