5 import os |
5 import os |
6 import subprocess |
6 import subprocess |
7 import sys |
7 import sys |
8 |
8 |
9 # Always load hg libraries from the hg we can find on $PATH. |
9 # Always load hg libraries from the hg we can find on $PATH. |
10 hglib = subprocess.check_output( |
10 hglib = subprocess.check_output(['hg', 'debuginstall', '-T', '{hgmodules}']) |
11 ['hg', 'debuginstall', '-T', '{hgmodules}']) |
|
12 sys.path.insert(0, os.path.dirname(hglib)) |
11 sys.path.insert(0, os.path.dirname(hglib)) |
13 |
12 |
14 from mercurial import util |
13 from mercurial import util |
15 |
14 |
16 ap = argparse.ArgumentParser() |
15 ap = argparse.ArgumentParser() |
17 ap.add_argument('--paranoid', |
16 ap.add_argument( |
18 action='store_true', |
17 '--paranoid', |
19 help=("Be paranoid about how version numbers compare and " |
18 action='store_true', |
20 "produce something that's more likely to sort " |
19 help=( |
21 "reasonably.")) |
20 "Be paranoid about how version numbers compare and " |
|
21 "produce something that's more likely to sort " |
|
22 "reasonably." |
|
23 ), |
|
24 ) |
22 ap.add_argument('--selftest', action='store_true', help='Run self-tests.') |
25 ap.add_argument('--selftest', action='store_true', help='Run self-tests.') |
23 ap.add_argument('versionfile', help='Path to a valid mercurial __version__.py') |
26 ap.add_argument('versionfile', help='Path to a valid mercurial __version__.py') |
|
27 |
24 |
28 |
25 def paranoidver(ver): |
29 def paranoidver(ver): |
26 """Given an hg version produce something that distutils can sort. |
30 """Given an hg version produce something that distutils can sort. |
27 |
31 |
28 Some Mac package management systems use distutils code in order to |
32 Some Mac package management systems use distutils code in order to |
106 extra = '+' + extra |
110 extra = '+' + extra |
107 else: |
111 else: |
108 extra = '' |
112 extra = '' |
109 return '%d.%d.%d%s' % (major, minor, micro, extra) |
113 return '%d.%d.%d%s' % (major, minor, micro, extra) |
110 |
114 |
|
115 |
111 def main(argv): |
116 def main(argv): |
112 opts = ap.parse_args(argv[1:]) |
117 opts = ap.parse_args(argv[1:]) |
113 if opts.selftest: |
118 if opts.selftest: |
114 import doctest |
119 import doctest |
|
120 |
115 doctest.testmod() |
121 doctest.testmod() |
116 return |
122 return |
117 with open(opts.versionfile) as f: |
123 with open(opts.versionfile) as f: |
118 for l in f: |
124 for l in f: |
119 if l.startswith('version = b'): |
125 if l.startswith('version = b'): |
120 # version number is entire line minus the quotes |
126 # version number is entire line minus the quotes |
121 ver = l[len('version = b') + 1:-2] |
127 ver = l[len('version = b') + 1 : -2] |
122 break |
128 break |
123 if opts.paranoid: |
129 if opts.paranoid: |
124 print(paranoidver(ver)) |
130 print(paranoidver(ver)) |
125 else: |
131 else: |
126 print(ver) |
132 print(ver) |
127 |
133 |
|
134 |
128 if __name__ == '__main__': |
135 if __name__ == '__main__': |
129 main(sys.argv) |
136 main(sys.argv) |