Commit | Line | Data |
---|---|---|
def828cf KH |
1 | from stgit.exception import StgException |
2 | from stgit import run, utils | |
3 | import os.path, re, sys | |
4 | ||
5 | class VersionUnavailable(StgException): | |
6 | pass | |
7 | ||
8 | def 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' | |
24 | return re.sub('-', '.', utils.strip_prefix('v', v)) | |
25 | ||
26 | def builtin_version(): | |
27 | try: | |
28 | import builtin_version as bv | |
29 | except ImportError: | |
30 | raise VersionUnavailable() | |
31 | else: | |
32 | return bv.version | |
33 | ||
34 | def write_builtin_version(): | |
35 | try: | |
36 | v = git_describe_version() | |
37 | except VersionUnavailable: | |
38 | return | |
39 | f = file(os.path.join(sys.path[0], 'stgit', 'builtin_version.py'), 'w') | |
40 | f.write('# This file was generated automatically. Do not edit by hand.\n' | |
41 | 'version = %r\n' % v) | |
42 | ||
43 | def get_version(): | |
44 | for v in [git_describe_version, builtin_version]: | |
45 | try: | |
46 | return v() | |
47 | except VersionUnavailable: | |
48 | pass | |
49 | return 'unknown-version' | |
50 | ||
51 | version = get_version() | |
453d47ae CM |
52 | |
53 | # minimum version requirements | |
54 | git_min_ver = '1.5.2' | |
e9827449 | 55 | python_min_ver = '2.4' |