1 # Copyright (c) 2008 David Aguilar
2 """This module inspects the cola repository and calculates
10 from cola
.exception
import ColaException
12 from cola
import utils
14 class VersionUnavailable(ColaException
):
17 def git_describe_version():
18 """Inspect the cola git repository and return the current version."""
21 v
= git
.Git
.execute(['git', 'describe', '--tags', '--abbrev=4'])
22 except git
.GitCommandError
, e
:
23 raise VersionUnavailable(str(e
))
24 if not re
.match(r
'^v[0-9]', v
):
25 raise VersionUnavailable('%s: bad version' % v
)
27 dirty
= git
.Git
.execute(['git', 'diff-index', '--name-only', 'HEAD'])
28 except git
.GitCommandError
, e
:
29 raise VersionUnavailable(str(e
))
32 return re
.sub('-', '.', utils
.strip_prefix('v', v
))
34 def builtin_version():
35 """Return the builtin version or calculate it as needed."""
37 import builtin_version
as bv
39 raise VersionUnavailable()
43 def _builtin_version_file(ext
= 'py'):
44 """Returns the path to cola/builtin_version.py."""
45 return os
.path
.join(sys
.path
[0], 'cola', 'builtin_version.%s' % ext
)
47 def write_builtin_version():
48 """Writes cola/builtin_version.py."""
50 v
= git_describe_version()
51 except VersionUnavailable
:
53 f
= file(_builtin_version_file(), 'w')
54 f
.write('# This file was generated automatically. Do not edit by hand.\n'
57 def delete_builtin_version():
58 """Deletes cola/builtin_version.py."""
59 for ext
in ['py', 'pyc', 'pyo']:
60 fn
= _builtin_version_file(ext
)
61 if os
.path
.exists(fn
):
65 """Returns the builtin version or calculates the current version."""
66 for v
in [builtin_version
, git_describe_version
]:
69 except VersionUnavailable
:
71 return 'unknown-version'
73 version
= get_version()
75 git_min_ver
= '1.5.2' #: minimum git version
76 python_min_ver
= '2.4' #: minimum python version
77 pyqt_min_ver
= '4.3' #: minimum PyQt version