updaterevision/updaterevision.py

Fri, 24 Jul 2015 04:24:38 +0300

author
Teemu Piippo <tsapii@utu.fi>
date
Fri, 24 Jul 2015 04:24:38 +0300
changeset 100
d301ead29d7c
parent 77
32ef969adeed
child 124
c5ff5a4704dd
permissions
-rw-r--r--

Apply Leonard's patch for fixing the colors:

The colors were broken again.
* isprint for some reason returned true when the given byte is higher than 255.
The char cast of the byte was then printed which resulted in odd characters
popping up. Black appeared as ^@ which is NULL in caret notation.
* After that, the colors were all messed up because the RLINE enum didn't take
in account the color swapping.
So instead of messing up the enum order/number I went for a new "range-like"
method.
* After fixing all of that, I noticed the Interface::render_colorline had a
broken loop since the VS2010 commits.
This made the lines not print entierely and messed up the colors etc.

1
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1 #
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
2 # Copyright 2014 Teemu Piippo
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
3 # All rights reserved.
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
4 #
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
5 # Redistribution and use in source and binary forms, with or without
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
6 # modification, are permitted provided that the following conditions
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
7 # are met:
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
8 #
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
9 # 1. Redistributions of source code must retain the above copyright
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
10 # notice, this list of conditions and the following disclaimer.
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
11 # 2. Redistributions in binary form must reproduce the above copyright
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
12 # notice, this list of conditions and the following disclaimer in the
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
13 # documentation and/or other materials provided with the distribution.
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
14 # 3. Neither the name of the copyright holder nor the names of its
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
15 # contributors may be used to endorse or promote products derived from
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
16 # this software without specific prior written permission.
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
17 #
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
20 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
21 # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
22 # OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
23 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
24 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
25 # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
26 # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
27 # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
28 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
29 #
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
30
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
31 import sys
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
32 import subprocess
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
33 from datetime import datetime
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
34
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
35 if len (sys.argv) != 2:
77
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
36 print 'usage: %s <output>' % sys.argv[0]
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
37 quit (1)
1
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
38
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
39 oldrev = ''
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
40
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
41 try:
77
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
42 with open (sys.argv[1]) as fp:
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
43 oldrev = fp.readline().replace ('\n', '').replace ('// ', '')
1
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
44 except IOError:
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
45 pass
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
46
77
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
47 delim='@'*10
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
48 rev, branch, timestampstr, tags = subprocess.check_output (['hg', 'log', '-r.', '--template',
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
49 delim.join (['{node|short}', '{branch}', '{date|hgdate}', '{tags}'])]).replace ('\n', '').split (delim)
1
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
50
77
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
51 timestamp = int (timestampstr.split(' ')[0])
1
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
52 date = datetime.utcfromtimestamp (timestamp)
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
53 datestring = date.strftime ('%y%m%d-%H%M') if date.year >= 2000 else '000000-0000'
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
54
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
55 if len(rev) > 7:
77
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
56 rev = rev[0:7]
1
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
57
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
58 if subprocess.check_output (['hg', 'id', '-n']).replace ('\n', '')[-1] == '+':
77
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
59 rev += '+'
1
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
60
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
61 if rev == oldrev:
77
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
62 print "%s is up to date at %s" % (sys.argv[1], rev)
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
63 quit (0)
1
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
64
4dd5bde4e777 - a whole lot of supplementary source code!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
65 with open (sys.argv[1], 'w') as fp:
77
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
66 fp.write ('// %s\n' % rev)
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
67 fp.write ('#define HG_NODE "%s"\n' % rev)
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
68 fp.write ('#define HG_BRANCH "%s"\n' % branch)
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
69 fp.write ('#define HG_DATE_VERSION "%s"\n' % datestring)
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
70 fp.write ('#define HG_DATE_STRING "%s"\n' % date.strftime ('%d %b %Y'))
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
71 fp.write ('#define HG_DATE_TIME %d\n' % int (timestamp))
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
72
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
73 if tags and tags != 'tip':
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
74 fp.write ('#define HG_TAG "%s"\n' % tags.split(' ')[0])
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
75
32ef969adeed Updated updaterevision.py, now handles tags and provides HG_TAG if appropriate
Teemu Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
76 print '%s updated to %s' % (sys.argv[1], rev)

mercurial