mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-04 19:26:52 +00:00
Add hook for ensuring vcs permalinks
This commit is contained in:
parent
dec98f7bc8
commit
9db0a745f6
6 changed files with 96 additions and 0 deletions
43
pre_commit_hooks/check_vcs_permalinks.py
Normal file
43
pre_commit_hooks/check_vcs_permalinks.py
Normal file
|
|
@ -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())
|
||||
Loading…
Add table
Add a link
Reference in a new issue