Add trailing whitespace fixer.
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 89bae15..e5ccd34 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,11 +1,14 @@
-
repo: git@github.com:pre-commit/pre-commit-hooks
- sha: 5e713f8878b7d100c0e059f8cc34be4fc2e8f897
+ sha: 10c042c99c061b90e4ea11d52e3c5fc93f94b373
hooks:
-
id: pyflakes
files: '\.py$'
+ -
+ id: debug-statements
+ files: '\.py$'
-
repo: git@github.com:pre-commit/pre-commit
diff --git a/manifest.yaml b/manifest.yaml
index f7e7e47..9202184 100644
--- a/manifest.yaml
+++ b/manifest.yaml
@@ -11,3 +11,9 @@
description: This hook checks that debug statements (pdb, ipdb, pudb) are not imported on commit.
entry: debug-statement-hook
language: python
+-
+ id: trailing-whitespace
+ name: Trim Trailing Whitespace
+ description: This hook trims trailing whitespace.
+ entry: trailing-whitespace-fixer
+ language: python
diff --git a/pre_commit_hooks/debug_statement_hook.py b/pre_commit_hooks/debug_statement_hook.py
index 7e088ef..5f16727 100644
--- a/pre_commit_hooks/debug_statement_hook.py
+++ b/pre_commit_hooks/debug_statement_hook.py
@@ -46,7 +46,7 @@
def debug_statement_hook(argv):
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to run')
- args = parser.parse_args()
+ args = parser.parse_args(argv)
retv = 0
for filename in args.filenames:
diff --git a/pre_commit_hooks/trailing_whitespace_fixer.py b/pre_commit_hooks/trailing_whitespace_fixer.py
new file mode 100644
index 0000000..5038e6e
--- /dev/null
+++ b/pre_commit_hooks/trailing_whitespace_fixer.py
@@ -0,0 +1,30 @@
+
+import argparse
+import sys
+from plumbum import local
+
+
+def fix_trailing_whitespace(argv):
+ parser = argparse.ArgumentParser()
+ parser.add_argument('filenames', nargs='*', help='Filenames to fix')
+ args = parser.parse_args(argv)
+
+ bad_whitespace_files = filter(bool, local['grep'][
+ ('-l', '[[:space:]]$') + tuple(args.filenames)
+ ](retcode=None).splitlines())
+
+ if bad_whitespace_files:
+ for bad_whitespace_file in bad_whitespace_files:
+ print 'Fixing {0}'.format(bad_whitespace_file)
+ local['sed']['-i', '-e', 's/[[:space:]]*$//', bad_whitespace_file]()
+ return 1
+ else:
+ return 0
+
+
+def entry():
+ fix_trailing_whitespace(sys.argv[1:])
+
+
+if __name__ == '__main__':
+ sys.exit(entry())
diff --git a/requirements.txt b/requirements.txt
index 0c043a5..118c89c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,5 @@
argparse
+plumbum
pyflakes
simplejson
diff --git a/setup.py b/setup.py
index ccca970..ba930a3 100644
--- a/setup.py
+++ b/setup.py
@@ -7,12 +7,14 @@
packages=find_packages('.', exclude=('tests*', 'testing*')),
install_requires=[
'argparse',
+ 'plumbum',
'pyflakes',
'simplejson',
],
entry_points={
'console_scripts': [
'debug-statement-hook = pre_commit_hooks.debug_statement_hook:entry',
+ 'trailing-whitespace-fixer = pre_commit_hooks.railing_whitespace_fixer:entry',
],
},
)