Commit | Line | Data |
---|---|---|
def828cf KH |
1 | from stgit.exception import StgException |
2 | from stgit import run, utils | |
5c5234db | 3 | import os, os.path, re, sys |
def828cf KH |
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' | |
5c365a2b | 24 | return utils.strip_prefix('v', v) |
def828cf KH |
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 | ||
5c5234db KH |
34 | def _builtin_version_file(ext = 'py'): |
35 | return os.path.join(sys.path[0], 'stgit', 'builtin_version.%s' % ext) | |
36 | ||
def828cf KH |
37 | def 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 |
46 | def 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 | 52 | def 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 | ||
60 | version = get_version() | |
453d47ae CM |
61 | |
62 | # minimum version requirements | |
63 | git_min_ver = '1.5.2' | |
e9827449 | 64 | python_min_ver = '2.4' |