Revision 07d104d8 snf-common/synnefo/version.py

b/snf-common/synnefo/version.py
1
import pkg_resources
2

  
3

  
4
def get_dist_from_module(modname):
5
    pkgroot = pkg_resources.get_provider(modname).egg_root
6
    return list(pkg_resources.find_distributions(pkgroot))[0]
7

  
8

  
9
def get_dist(dist_name):
10
    return pkg_resources.get_distribution(dist_name)
11

  
12

  
13
def get_dist_version(dist_name):
14
    """
15
    Get the version for the specified distribution name
16
    """
17
    try:
18
        return get_dist(dist_name).version
19
    except Exception, e:
20
        return 'unknown'
21

  
22

  
23
def get_component_version(modname):
24
    """
25
    Return the version of a synnefo module/package based on its
26
    corresponding distributed package version
27
    """
28
    try:
29
        return get_dist_from_module(modname).version
30
    except Exception, e:
31
        return 'unknown'
32

  
33

  
34
def vcs_info():
35
    """
36
    Return current git HEAD commit information
37
    """
38
    import subprocess
39
    callgit = lambda(cmd): subprocess.Popen(
40
            ['/bin/sh', '-c', cmd],
41
            stdout=subprocess.PIPE).communicate()[0].strip()
42

  
43
    branch = callgit('git branch | grep -Ei "\* (.*)" | cut -f2 -d" "')
44
    revid = callgit("git --no-pager log --max-count=1 | cut -f2 -d' ' | head -1")
45
    revno = callgit('git --no-pager log --oneline | wc -l')
46
    desc = callgit('git describe')
47

  
48
    return branch, revid, revno, desc
49

  
50

  
51
def vcs_version():
52
    """
53
    Package version based on `git describe`, compatible with setuptools
54
    version format
55
    """
56
    return vcs_info()[3].replace('v', '')
57 1

  
2
__version__ = "0.7.3-291-g5832c79"
3
__version_info__ = __version__.split(".")
4
    

Also available in: Unified diff