# =============================================================================
# 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