gpt4 book ai didi

grep - pygrep 预提交钩子(Hook)来检查字符串是否存在

转载 作者:行者123 更新时间:2023-12-05 02:48:45 26 4
gpt4 key购买 nike

如果我想写一个预提交钩子(Hook)来检查,例如,字符串“I love pre-commit”不在我的源代码中,我可以这样做

- repo: local
hooks:
- id: love_statement
name: Check that I love pre-commit isn't in source code
types: [python]
entry: 'I love pre-commit'
language: pygrep

但是,如果我想做相反的事情怎么办 - 即检查每个源代码文件中是否有“我喜欢预提交”?我如何修改我的钩子(Hook),以便在找到“我喜欢预提交”时不会失败,而在没有找到“我喜欢预提交”时失败?


现在可以用

args: [--negate]

最佳答案

您可以使用一些 regex tricks这样做:

repos:
- repo: local
hooks:
- id: love_statement
name: Check that I love pre-commit is in source code
types: [python]
args: [--multiline]
entry: '\A((?!I love pre-commit).)*\Z'
language: pygrep

这结合了以下内容:

  • 使用 this answer 中的粗略负向后视模式
  • 使用args: [--multiline]pygrep 插入全文件匹配模式
  • ^$(每行 anchor )切换到 \A\Z(整个字符串 anchor )

这是一个示例执行:

$ git ls-files -- '*.py' | xargs tail -n999
==> t.py <==
print('I do not love pre-commit')

==> t2.py <==
print('I love pre-commit')

$ pre-commit run --all-files
Check that I love pre-commit is in source code...........................Failed
- hook id: love_statement
- exit code: 1

t.py:1:print('I do not love pre-commit')

免责声明:我是预提交的作者

关于grep - pygrep 预提交钩子(Hook)来检查字符串是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64339118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com