Do not replace '-' with '.' in the version string
[stgit] / stgit / version.py
CommitLineData
def828cf
KH
1from stgit.exception import StgException
2from stgit import run, utils
5c5234db 3import os, os.path, re, sys
def828cf
KH
4
5class VersionUnavailable(StgException):
6 pass
7
8def git_describe_version():
9 path = sys.path[0]
10 try:
11 v = run.Run('git', 'describe', '--tags', '--abbrev=4'
12 ).cwd(path).output_one_line()
13 except run.RunException, e:
14 raise VersionUnavailable(str(e))
15 if not re.match(r'^v[0-9]', v):
16 raise VersionUnavailable('%s: bad version' % v)
17 try:
18 dirty = run.Run('git', 'diff-index', '--name-only', 'HEAD'
19 ).cwd(path).raw_output()
20 except run.RunException, e:
21 raise VersionUnavailable(str(e))
22 if dirty:
23 v += '-dirty'
5c365a2b 24 return utils.strip_prefix('v', v)
def828cf
KH
25
26def builtin_version():
27 try:
28 import builtin_version as bv
29 except ImportError:
30 raise VersionUnavailable()
31 else:
32 return bv.version
33
5c5234db
KH
34def _builtin_version_file(ext = 'py'):
35 return os.path.join(sys.path[0], 'stgit', 'builtin_version.%s' % ext)
36
def828cf
KH
37def write_builtin_version():
38 try:
39 v = git_describe_version()
40 except VersionUnavailable:
41 return
5c5234db 42 f = file(_builtin_version_file(), 'w')
def828cf
KH
43 f.write('# This file was generated automatically. Do not edit by hand.\n'
44 'version = %r\n' % v)
45
5c5234db
KH
46def delete_builtin_version():
47 for ext in ['py', 'pyc', 'pyo']:
48 fn = _builtin_version_file(ext)
49 if os.path.exists(fn):
50 os.remove(fn)
51
def828cf 52def get_version():
5c5234db 53 for v in [builtin_version, git_describe_version]:
def828cf
KH
54 try:
55 return v()
56 except VersionUnavailable:
57 pass
58 return 'unknown-version'
59
60version = get_version()
453d47ae
CM
61
62# minimum version requirements
63git_min_ver = '1.5.2'
e9827449 64python_min_ver = '2.4'