Refactored how entry points work. · lircs/pre-commit-hooks@4574154 · GitHub
Skip to content

Commit 4574154

Browse files
committed
Refactored how entry points work.
1 parent 5db7f2d commit 4574154

8 files changed

Lines changed: 71 additions & 42 deletions

File tree

.pre-commit-config.yaml

Lines changed: 8 additions & 16 deletions

manifest.yaml

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11

2-
-
3-
id: pyflakes
2+
- id: pyflakes
43
name: Pyflakes
54
description: This validator runs pyflakes.
65
entry: pyflakes
76
language: python
8-
-
9-
id: debug-statements
7+
- id: debug-statements
108
name: Debug Statements (Python)
119
description: This hook checks that debug statements (pdb, ipdb, pudb) are not imported on commit.
1210
entry: debug-statement-hook
1311
language: python
14-
-
15-
id: trailing-whitespace
12+
- id: trailing-whitespace
1613
name: Trim Trailing Whitespace
1714
description: This hook trims trailing whitespace.
1815
entry: trailing-whitespace-fixer
1916
language: python
20-
-
21-
id: name-tests-test
17+
- id: name-tests-test
2218
name: Tests should end in _test.py
2319
description: This verifies that test files are named correctly
2420
entry: name-tests-test
25-
language: python
21+
language: python

pre_commit_hooks/debug_statement_hook.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import collections
55
import sys
66

7+
from pre_commit_hooks.util import entry
8+
79

810
DEBUG_STATEMENTS = set(['pdb', 'ipdb', 'pudb'])
911

@@ -43,6 +45,7 @@ def check_file_for_debug_statements(filename):
4345
return 0
4446

4547

48+
@entry
4649
def debug_statement_hook(argv):
4750
parser = argparse.ArgumentParser()
4851
parser.add_argument('filenames', nargs='*', help='Filenames to run')
@@ -55,9 +58,5 @@ def debug_statement_hook(argv):
5558
return retv
5659

5760

58-
def entry():
59-
return debug_statement_hook(sys.argv[1:])
60-
61-
6261
if __name__ == '__main__':
63-
sys.exit(entry())
62+
sys.exit(debug_statement_hook())

pre_commit_hooks/tests_should_end_in_test.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33

44
import sys
55

6+
from pre_commit_hooks.util import entry
67

8+
9+
@entry
710
def validate_files(argv):
811
retcode = 0
912
for filename in argv:
@@ -18,9 +21,5 @@ def validate_files(argv):
1821
return retcode
1922

2023

21-
def entry():
22-
return validate_files(sys.argv[1:])
23-
24-
2524
if __name__ == '__main__':
2625
sys.exit(entry())

pre_commit_hooks/trailing_whitespace_fixer.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
import sys
44
from plumbum import local
55

6+
from pre_commit_hooks.util import entry
67

8+
9+
@entry
710
def fix_trailing_whitespace(argv):
811
parser = argparse.ArgumentParser()
912
parser.add_argument('filenames', nargs='*', help='Filenames to fix')
@@ -22,9 +25,5 @@ def fix_trailing_whitespace(argv):
2225
return 0
2326

2427

25-
def entry():
26-
fix_trailing_whitespace(sys.argv[1:])
27-
28-
2928
if __name__ == '__main__':
30-
sys.exit(entry())
29+
sys.exit(fix_trailing_whitespace())

pre_commit_hooks/util.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
import functools
3+
import sys
4+
5+
6+
def entry(func):
7+
"""Allows a function that has `argv` as an argument to be used as a
8+
commandline entry. This will make the function callable using either
9+
explicitly passed argv or defaulting to sys.argv[1:]
10+
"""
11+
@functools.wraps(func)
12+
def wrapper(argv=None):
13+
if argv is None:
14+
argv = sys.argv[1:]
15+
return func(argv)
16+
return wrapper

setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
],
1414
entry_points={
1515
'console_scripts': [
16-
'debug-statement-hook = pre_commit_hooks.debug_statement_hook:entry',
17-
'trailing-whitespace-fixer = pre_commit_hooks.trailing_whitespace_fixer:entry',
18-
'name-tests-test = pre_commit_hooks.tests_should_end_in_test:entry',
16+
'debug-statement-hook = pre_commit_hooks.debug_statement_hook:debug_statement_hook',
17+
'trailing-whitespace-fixer = pre_commit_hooks.trailing_whitespace_fixer:fix_trailing_whitespace',
18+
'name-tests-test = pre_commit_hooks.tests_should_end_in_test:validate_files',
1919
],
2020
},
2121
)

tests/util_test.py

Lines changed: 28 additions & 0 deletions

0 commit comments

Comments
 (0)