widgets: reset() the progress dialog on construction
[git-cola.git] / cola / version.py
blob12d5f9909bae86ee2c593195de44dedbdd9d936f
1 # Copyright (c) David Aguilar
2 """Provide git-cola's version number"""
3 from __future__ import division, absolute_import, unicode_literals
5 import os
6 import sys
8 if __name__ == '__main__':
9 srcdir = os.path.dirname(os.path.dirname(__file__))
10 sys.path.insert(1, srcdir)
12 from cola.git import git
13 from cola.git import STDOUT
14 from cola.decorators import memoize
15 from cola._version import VERSION
17 # minimum version requirements
18 _versions = {
19 # git diff learned --patience in 1.6.2
20 # git mergetool learned --no-prompt in 1.6.2
21 # git difftool moved out of contrib in git 1.6.3
22 'git': '1.6.3',
23 'python': '2.6',
24 # git diff --submodule was introduced in 1.6.6
25 'diff-submodule': '1.6.6',
29 def get(key):
30 """Returns an entry from the known versions table"""
31 return _versions.get(key)
34 def version():
35 """Returns the current version"""
36 return VERSION
39 @memoize
40 def check_version(min_ver, ver):
41 """Check whether ver is greater or equal to min_ver
42 """
43 min_ver_list = version_to_list(min_ver)
44 ver_list = version_to_list(ver)
45 return min_ver_list <= ver_list
48 @memoize
49 def check(key, ver):
50 """Checks if a version is greater than the known version for <what>"""
51 return check_version(get(key), ver)
54 def version_to_list(version):
55 """Convert a version string to a list of numbers or strings
56 """
57 ver_list = []
58 for p in version.split('.'):
59 try:
60 n = int(p)
61 except ValueError:
62 n = p
63 ver_list.append(n)
64 return ver_list
67 @memoize
68 def git_version_str():
69 """Returns the current GIT version"""
70 return git.version()[STDOUT].strip()
73 @memoize
74 def git_version():
75 """Returns the current GIT version"""
76 parts = git_version_str().split()
77 if parts and len(parts) >= 3:
78 return parts[2]
79 else:
80 # minimum supported version
81 return '1.6.3'
84 def print_version(brief=False):
85 if brief:
86 msg = '%s\n' % version()
87 else:
88 msg = 'cola version %s\n' % version()
89 sys.stdout.write(msg)
92 if __name__ == '__main__':
93 print_version(brief=True)