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 在 命令行工具
每月1,290次下载
685KB
471 行
hoox
hoox
是一个应用程序/库,允许用户将 Git 钩子作为仓库的一部分进行管理。
工作流程
CLI 安装
Git 钩子将包含对 hoox
CLI 的调用,因此需要安装 hoox
CLI 以执行 Git 钩子。如果没有安装,钩子将失败并阻止操作(默认行为)。
仓库初始化
为了初始化一个仓库,你可以
- 将 hoox 添加到你正在工作的 crate 的 dev-dependencies 中(如果你在 Rust 项目上工作)
此命令在构建过程中将 hoox 安装到 Git 仓库中(使用自定义cargo add hoox --dev
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