11 个不稳定版本 (3 个破坏性更新)

0.3.0 2024年8月11日
0.2.3 2024年8月8日
0.1.9 2024年8月5日
0.0.0 2024年7月25日

#79命令行工具

Download history 132/week @ 2024-07-22 494/week @ 2024-07-29 593/week @ 2024-08-05 71/week @ 2024-08-12

每月1,290次下载

MIT 许可证

685KB
471

hoox

hoox 是一个应用程序/库,允许用户将 Git 钩子作为仓库的一部分进行管理。

工作流程

CLI 安装

Git 钩子将包含对 hoox CLI 的调用,因此需要安装 hoox CLI 以执行 Git 钩子。如果没有安装,钩子将失败并阻止操作(默认行为)。

仓库初始化

为了初始化一个仓库,你可以

  • 将 hoox 添加到你正在工作的 crate 的 dev-dependencies 中(如果你在 Rust 项目上工作)
    cargo add hoox --dev
    
    此命令在构建过程中将 hoox 安装到 Git 仓库中(使用自定义 build.rs),即使它不在根 Cargo.toml 中。它从构建过程中的 OUT_DIR 环境变量开始,向上移动目录路径,找到第一个包含 .git 子目录的文件夹。
  • 或者使用以下命令将 hoox 手动安装到 Git 文件夹中:
    hoox init
    
    此方法与上述方法相同,但它不使用构建过程中存在的 OUT_DIR 环境变量,而是使用 shell 的当前工作目录(cwd)。

手动运行钩子

要手动运行钩子,请使用

hoox run $HOOK_NAME

如果钩子 $HOOK_NAME.hoox.toml 文件中没有指定,此命令将失败。为了使命令成功并忽略缺少的钩子定义,请传递 --ignore-missing 参数。

示例

version: "0.0.0"
verbosity: all

.cargo: &cargo !inline |-
  set -e
  set -u
  cargo +nightly fmt --all -- --check
  cargo test --all

hooks:
  "pre-commit":
    # use YAML anchor
    - command: *cargo
    # use inline command
    - command: !inline 'cargo doc --no-deps'
      verbosity: stderr
      severity: warn
    # reference a script file (path is relative to Git repo root)
    - command: !file "./hello_world.sh"
    # reference a script file with custom program
    - command: !file "./hello_world.py"
      program: ["python3", "-c"]
      verbosity: stderr
      severity: error

  "pre-push":
    # re-use YAML anchor
    - command: *cargo

  "prepare-commit-msg":
    # write to $COMMIT_MSG_FILE ($1) which is going to be the template commit message for this commit
    # which is subsequently opened in the $EDITOR program.
    # $0 = path to "hoox.yaml" file in any hook
    - command: !inline |-
        COMMIT_MSG_FILE=$1
        echo "Work in progress" > $COMMIT_MSG_FILE

可用的钩子

  • applypatch-msg
  • commit-msg
  • post-applypatch
  • post-checkout
  • post-commit
  • post-merge
  • post-receive
  • post-rewrite
  • post-update
  • pre-applypatch
  • pre-auto-gc
  • pre-commit
  • pre-push
  • pre-rebase
  • pre-receive
  • prepare-commit-msg
  • push-to-checkout
  • sendemail-validate
  • update

依赖项

~5–7.5MB
~129K SLoC