# pre-push: 严格检查，阻塞有问题的代码推送到远程
# 类型检查（全项目，因为类型错误可能跨文件传播）
npx tsc --noEmit

# ESLint 严格检查（仅检查本次推送的变更文件，不阻塞不相关的旧代码）
# 新分支无 upstream 时，回退到与 origin/main 对比
MERGE_BASE=$(git merge-base HEAD @{upstream} 2>/dev/null || git merge-base HEAD origin/main 2>/dev/null)
if [ -n "$MERGE_BASE" ]; then
  CHANGED_FILES=$(git diff --name-only --diff-filter=d "$MERGE_BASE" HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx' '*.mjs')
  if [ -n "$CHANGED_FILES" ]; then
    echo "$CHANGED_FILES" | xargs npx eslint --max-warnings=0
  fi
fi
