hgbook
annotate fr/examples/ch09/check_whitespace.py.lst @ 966:39d37f84beaf
adding more new files - probably generated but still in versionning
author | Romain PELISSE <belaran@gmail.com> |
---|---|
date | Sun Aug 16 13:20:24 2009 +0200 (2009-08-16) |
parents | |
children |
rev | line source |
---|---|
belaran@966 | 1 #!/usr/bin/env python |
belaran@966 | 2 # |
belaran@966 | 3 # save as .hg/check_whitespace.py and make executable |
belaran@966 | 4 |
belaran@966 | 5 import re |
belaran@966 | 6 |
belaran@966 | 7 def trailing_whitespace(difflines): |
belaran@966 | 8 # |
belaran@966 | 9 linenum, header = 0, False |
belaran@966 | 10 |
belaran@966 | 11 for line in difflines: |
belaran@966 | 12 if header: |
belaran@966 | 13 # remember the name of the file that this diff affects |
belaran@966 | 14 m = re.match(r'(?:---|\+\+\+) ([^\t]+)', line) |
belaran@966 | 15 if m and m.group(1) != '/dev/null': |
belaran@966 | 16 filename = m.group(1).split('/', 1)[-1] |
belaran@966 | 17 if line.startswith('+++ '): |
belaran@966 | 18 header = False |
belaran@966 | 19 continue |
belaran@966 | 20 if line.startswith('diff '): |
belaran@966 | 21 header = True |
belaran@966 | 22 continue |
belaran@966 | 23 # hunk header - save the line number |
belaran@966 | 24 m = re.match(r'@@ -\d+,\d+ \+(\d+),', line) |
belaran@966 | 25 if m: |
belaran@966 | 26 linenum = int(m.group(1)) |
belaran@966 | 27 continue |
belaran@966 | 28 # hunk body - check for an added line with trailing whitespace |
belaran@966 | 29 m = re.match(r'\+.*\s$', line) |
belaran@966 | 30 if m: |
belaran@966 | 31 yield filename, linenum |
belaran@966 | 32 if line and line[0] in ' +': |
belaran@966 | 33 linenum += 1 |
belaran@966 | 34 |
belaran@966 | 35 if __name__ == '__main__': |
belaran@966 | 36 import os, sys |
belaran@966 | 37 |
belaran@966 | 38 added = 0 |
belaran@966 | 39 for filename, linenum in trailing_whitespace(os.popen('hg export tip')): |
belaran@966 | 40 print >> sys.stderr, ('%s, line %d: trailing whitespace added' % |
belaran@966 | 41 (filename, linenum)) |
belaran@966 | 42 added += 1 |
belaran@966 | 43 if added: |
belaran@966 | 44 # save the commit message so we don't need to retype it |
belaran@966 | 45 os.system('hg tip --template "{desc}" > .hg/commit.save') |
belaran@966 | 46 print >> sys.stderr, 'commit message saved to .hg/commit.save' |
belaran@966 | 47 sys.exit(1) |