hgbook

annotate ja/examples/data/check_whitespace.py @ 708:d6ca1334a19d

Japanese translation on a24b370a16ee
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Fri Jul 31 19:49:16 2009 +0900 (2009-07-31)
parents
children
rev   line source
foozy@708 1 #!/usr/bin/python
foozy@708 2
foozy@708 3 import re
foozy@708 4
foozy@708 5 def trailing_whitespace(difflines):
foozy@708 6 added, linenum, header = [], 0, False
foozy@708 7
foozy@708 8 for line in difflines:
foozy@708 9 if header:
foozy@708 10 # remember the name of the file that this diff affects
foozy@708 11 m = re.match(r'(?:---|\+\+\+) ([^\t]+)', line)
foozy@708 12 if m and m.group(1) != '/dev/null':
foozy@708 13 filename = m.group(1).split('/', 1)[-1]
foozy@708 14 if line.startswith('+++ '):
foozy@708 15 header = False
foozy@708 16 continue
foozy@708 17 if line.startswith('diff '):
foozy@708 18 header = True
foozy@708 19 continue
foozy@708 20 # hunk header - save the line number
foozy@708 21 m = re.match(r'@@ -\d+,\d+ \+(\d+),', line)
foozy@708 22 if m:
foozy@708 23 linenum = int(m.group(1))
foozy@708 24 continue
foozy@708 25 # hunk body - check for an added line with trailing whitespace
foozy@708 26 m = re.match(r'\+.*\s$', line)
foozy@708 27 if m:
foozy@708 28 added.append((filename, linenum))
foozy@708 29 if line and line[0] in ' +':
foozy@708 30 linenum += 1
foozy@708 31 return added
foozy@708 32
foozy@708 33 if __name__ == '__main__':
foozy@708 34 import os, sys
foozy@708 35
foozy@708 36 added = trailing_whitespace(os.popen('hg export tip'))
foozy@708 37 if added:
foozy@708 38 for filename, linenum in added:
foozy@708 39 print >> sys.stderr, ('%s, line %d: trailing whitespace added' %
foozy@708 40 (filename, linenum))
foozy@708 41 # save the commit message so we don't need to retype it
foozy@708 42 os.system('hg tip --template "{desc}" > .hg/commit.save')
foozy@708 43 print >> sys.stderr, 'commit message saved to .hg/commit.save'
foozy@708 44 sys.exit(1)