管理git钩子的库
项目描述
自动钩子
使用pyproject.toml
设置,用Python管理并编写git钩子的库。
在创建git提交时,使用纯Python实现自动格式化和代码检查,例如使用black和ruff,您是否也想要在pyproject.toml
文件中配置git钩子设置?
欢迎来到autohooks!
为什么?
已经存在几个用于管理和执行git钩子的杰出库。例如:husky、lint-staged、precise-commits或pre-commit。
然而,它们需要除Python之外的其他解释器(例如husky),需要除pyproject.toml
之外的其他配置文件,或者过于模糊(例如pre-commit)。pre-commit是用Python编写的,但它的支持钩子是用各种语言编写的。此外,它自己维护依赖关系,而不在当前环境中安装。
解决方案
autohooks是一个纯Python库,它安装了一个最小的可执行git钩子。它允许通过支持不同的模式来决定如何维护钩子依赖关系,并将其设置存储在众所周知的pyproject.toml
文件中。
需求
autohooks需要Python 3.9+。
插件
-
通过black进行Python代码格式化
-
通过autopep8进行Python代码格式化
-
通过ruff进行Python代码检查
-
通过pylint进行Python代码检查
-
通过flake8进行Python代码检查
-
通过mypy进行Python代码检查
-
通过isort进行Python导入排序
-
通过pytest运行测试
安装autohooks
poetry add --dev autohooks autohooks-plugin-black autohooks-plugin-ruff
poetry run autohooks activate --mode poetry
poetry run autohooks plugins add autohooks.plugins.black autohooks.plugins.ruff
autohooks activate
的输出应类似于
✓ autohooks pre-commit hook installed at /autohooks-test/.git/hooks/pre-commit using poetry mode.
Autohooks具有可扩展的插件模型。每个插件都提供不同的功能,通常需要安装额外的依赖项。
目前autohooks支持三种模式来管理这些依赖项
这些模式处理autohooks、插件及其依赖项在git钩子执行期间如何加载。
如果在pyproject.toml
配置文件中没有指定模式,并且激活期间也没有设置模式,autohooks将默认使用pythonpath模式。
有关如何使用这些模式结合pip、poetry或pipenv的详细信息,请参阅文档。
命令补全
autohooks
随附bash和zsh的命令行补全支持。
bash设置
echo "source ~/.autohooks-complete.bash" >> ~/.bashrc
autohooks --print-completion bash > ~/.autohooks-complete.bash
或者,您可以直接使用完成命令的结果,与 bash shell 的 eval 函数一起使用。
eval "$(autohooks --print-completion bash)"
zsh设置
echo 'fpath=("$HOME/.zsh.d" $fpath)' >> ~/.zsh
mkdir -p ~/.zsh.d/
autohooks --print-completion zsh > ~/.zsh.d/_autohooks
或者,您可以直接使用完成命令的结果,与 zsh shell 的 eval 函数一起使用。
eval "$(autohooks --print-completion zsh)"
维护者
该项目由 Greenbone AG 维护。
贡献
您的贡献非常受欢迎。请在 GitHub 上 创建一个拉取请求。较大的更改需要先通过 GitHub 上的 问题部分 与开发团队讨论。
许可证
版权所有 (C) 2019 - 2024 Greenbone AG
在 GNU 通用公共许可证 v3.0 或更高版本下许可。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源代码发行版
构建发行版
autohooks-24.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ee929a9f7ff68e61c73201de817b679df168b4465be1026550a71956b419200b |
|
MD5 | 78709f2839078572864e91956cb19e15 |
|
BLAKE2b-256 | 8b9d29e14a12211fedd24eb971ccda2eefba745f73b738098662651c4a7b2083 |
autohooks-24.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a2097de2e092fa7b78a17b63b73980d3cc42b01065feb2caf0d41e2bb506621b |
|
MD5 | 30b164ee721271c6766c7a1f259a4daa |
|
BLAKE2b-256 | f056782de8fe79c99777cfdef761bfdd232f1557b7e24b3e81cc676f59006f95 |