mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-05 19:46:54 +00:00
Add nocommit hook
This commit is contained in:
parent
d3cb871783
commit
56eb16f2f9
4 changed files with 50 additions and 19 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v3.1.0
|
rev: v3.2.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
|
|
|
||||||
|
|
@ -164,9 +164,9 @@
|
||||||
- id: no-commit-keywords
|
- id: no-commit-keywords
|
||||||
name: "Don't commit when nocommit keyword is present"
|
name: "Don't commit when nocommit keyword is present"
|
||||||
entry: no-commit-keywords
|
entry: no-commit-keywords
|
||||||
language: script
|
language: python
|
||||||
always_run: true
|
|
||||||
types: [text]
|
types: [text]
|
||||||
|
stages: [commit, push, manual]
|
||||||
- id: no-commit-to-branch
|
- id: no-commit-to-branch
|
||||||
name: "Don't commit to branch"
|
name: "Don't commit to branch"
|
||||||
entry: no-commit-to-branch
|
entry: no-commit-to-branch
|
||||||
|
|
|
||||||
47
pre_commit_hooks/no_commit_keywords.py
Normal file
47
pre_commit_hooks/no_commit_keywords.py
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
from typing import Optional
|
||||||
|
from typing import Sequence
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def check_for_no_commit_tokens(
|
||||||
|
filename: str,
|
||||||
|
tokens: Optional[Sequence[str]],
|
||||||
|
) -> str:
|
||||||
|
with open(filename, mode='r', encoding='utf-8') as file_processed:
|
||||||
|
lines = file_processed.read()
|
||||||
|
for token in tokens:
|
||||||
|
match = re.search(token, lines)
|
||||||
|
if match:
|
||||||
|
# no-commit token is present
|
||||||
|
return match.string
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def main(argv: Optional[Sequence[str]] = None) -> int:
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument(
|
||||||
|
'--tokens',
|
||||||
|
help=(
|
||||||
|
'The set of tokens, separated by space, used to block commits '
|
||||||
|
'if present. For example, "nocommit NOCOMMIT"'
|
||||||
|
),
|
||||||
|
)
|
||||||
|
parser.add_argument('filenames', nargs='*', help='Filenames to fix')
|
||||||
|
args = parser.parse_args(argv)
|
||||||
|
|
||||||
|
return_code = 0
|
||||||
|
tokens = args.tokens or ["nocommit"]
|
||||||
|
|
||||||
|
for filename in args.filenames:
|
||||||
|
_, extension = os.path.splitext(filename.lower())
|
||||||
|
match_string = check_for_no_commit_tokens(filename, tokens)
|
||||||
|
if match_string:
|
||||||
|
print(f'Found no-commit token in {filename}: {match_string}')
|
||||||
|
return_code = 1
|
||||||
|
return return_code
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
exit(main())
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
NOCOMMIT_PRESENT=$(git grep --ignore-case nocommit)
|
|
||||||
|
|
||||||
if [ -n $NOCOMMIT_PRESENT ]
|
|
||||||
then
|
|
||||||
echo "#nocommit tagged - commit prevented"
|
|
||||||
echo $NOCOMMIT_PRESENT
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue