# =============================================================================
# openUBMC 推荐的 .pre-commit-config.yaml 示例
# =============================================================================
# 本仓库 manifest 不依赖任何外部仓库:openUBMC 专属钩子、Python 格式化/静态
# 检查(black / isort / flake8)、JSON/YAML 语法检查、C/C++ 格式化(clang-format)
# 全部由本仓库通过 language: python + additional_dependencies 或 inline entry 提供。
# 另引用官方 pre-commit-hooks 国内镜像补齐 5 个通用检查(trailing-whitespace /
# end-of-file-fixer / check-merge-conflict / check-added-large-files /
# check-case-conflict)——这些需要独立脚本实现,本仓库不复刻。
# 按需注释/取消注释下面的 hook id。
#
# 使用前请把所有 rev: 更新为对应仓库的最新 tag。
# =============================================================================

repos:
  - repo: https://gitcode.com/openUBMC/pre-commit-hooks
    rev: 0.1.0
    hooks:
      # --- commit-msg 阶段 ---
      - id: conventional-commit
      - id: add-signoff-and-change-id

      # --- openUBMC 专属(pre-commit 阶段) ---
      - id: check-sr

      # --- JSON / YAML 语法检查 ---
      - id: check-json
      - id: check-yaml

      # --- Lua 格式化与静态检查 ---
      # 注意:stylua-format / luacheck 采用 language: system,需本地安装 stylua 和 luacheck,
      # 并在组件仓根目录提供 .stylua.toml 和 .luacheckrc 配置文件。
      # - id: stylua-format
      # - id: luacheck

      # --- Python 格式化与静态检查 ---
      - id: black
      - id: isort
      - id: no-space-before-colon
      - id: flake8

      # --- C/C++ 格式化 ---
      # 注意:clang-format 使用 -style=file,需项目根目录(或父目录)存在
      # .clang-format 文件。若缺失,clang-format 不会报错,而是按默认
      # --fallback-style=LLVM 静默格式化,配合 -i 会原地改写 C/C++ 文件。
      # 确认项目已有 .clang-format 后再取消下面的注释。
      # - id: clang-format

      # --- TypeScript / Vue 代码质量检查与格式化 ---
      # ESLint 做代码质量检查(逻辑错误、圈复杂度等),Prettier 做格式化。
      # 两者配合使用,eslint-config-prettier 已内置,关闭 ESLint 格式化规则避免冲突。
      # 需要 .eslintrc.js 和 .prettierrc.js 配置文件。
      # - id: eslint
      # - id: prettier

  # --- 通用代码卫生(官方 pre-commit-hooks 国内镜像) -------------------
  # 这 5 个钩子需要独立脚本实现(自动修复或非平凡检测逻辑),本仓库不复刻,
  # 直接引用官方仓库国内镜像。如需 detect-private-key 等其它钩子可在此追加;
  # JSON/YAML 校验本仓库已自提供,无需重复引用。
  - repo: https://gitcode.com/gh_mirrors/pr/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: trailing-whitespace
        exclude: '\.vscode/'
      - id: end-of-file-fixer
        exclude: '\.vscode/'
      - id: check-merge-conflict
      - id: check-added-large-files
        args: [--maxkb, "1024"]
      - id: check-case-conflict
      - id: detect-private-key