1 from stgit
.exception
import StgException
2 from stgit
import run
, utils
3 import os
, os
.path
, re
, sys
5 class VersionUnavailable(StgException
):
8 def git_describe_version():
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
)
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
))
24 return utils
.strip_prefix('v', v
)
26 def builtin_version():
28 import builtin_version
as bv
30 raise VersionUnavailable()
34 def _builtin_version_file(ext
= 'py'):
35 return os
.path
.join(sys
.path
[0], 'stgit', 'builtin_version.%s' % ext
)
37 def write_builtin_version():
39 v
= git_describe_version()
40 except VersionUnavailable
:
42 f
= file(_builtin_version_file(), 'w')
43 f
.write('# This file was generated automatically. Do not edit by hand.\n'
46 def delete_builtin_version():
47 for ext
in ['py', 'pyc', 'pyo']:
48 fn
= _builtin_version_file(ext
)
49 if os
.path
.exists(fn
):
53 for v
in [builtin_version
, git_describe_version
]:
56 except VersionUnavailable
:
58 return 'unknown-version'
60 version
= get_version()
62 # minimum version requirements
64 python_min_ver
= '2.4'