Add hook for ensuring vcs permalinks
diff --git a/pre_commit_hooks/check_vcs_permalinks.py b/pre_commit_hooks/check_vcs_permalinks.py
new file mode 100644
index 0000000..130abf6
--- /dev/null
+++ b/pre_commit_hooks/check_vcs_permalinks.py
@@ -0,0 +1,43 @@
+from __future__ import absolute_import
+from __future__ import print_function
+from __future__ import unicode_literals
+
+import argparse
+import re
+import sys
+
+
+GITHUB_NON_PERMALINK = re.compile(
+ b'https://github.com/[^/]+/[^/]+/blob/master/[^# ]+#L\d+',
+)
+
+
+def _check_filename(filename):
+ retv = 0
+ with open(filename, 'rb') as f:
+ for i, line in enumerate(f, 1):
+ if GITHUB_NON_PERMALINK.search(line):
+ sys.stdout.write('{}:{}:'.format(filename, i))
+ getattr(sys.stdout, 'buffer', sys.stdout).write(line)
+ retv = 1
+ return retv
+
+
+def main(argv=None):
+ parser = argparse.ArgumentParser()
+ parser.add_argument('filenames', nargs='*')
+ args = parser.parse_args(argv)
+
+ retv = 0
+ for filename in args.filenames:
+ retv |= _check_filename(filename)
+
+ if retv:
+ print()
+ print('Non-permanent github link detected.')
+ print('On any page on github press [y] to load a permalink.')
+ return retv
+
+
+if __name__ == '__main__':
+ exit(main())