version for setup.py
[tiramisu.git] / setup.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 from distutils.core import setup
4 from os.path import dirname, abspath, join, normpath, isdir, basename
5 from os import listdir
6
7 import os
8 import subprocess
9
10 def fetch_version():
11     """Get version from version.in or latest git tag"""
12     version_file='version.in'
13     version = "1.0"
14     git_last_tag_cmd = ['git', 'describe', '--tags', '--abbrev=0']
15
16     try:
17         if os.path.isfile(version_file):
18             version=file(version_file).readline().strip()
19         elif os.path.isdir('.git'):
20             popen = subprocess.Popen(git_last_tag_cmd, stdout=subprocess.PIPE)
21             out, ret = popen.communicate()
22             for line in out.split('\n'):
23                 if line:
24                     version = line.lstrip('release/')
25                     break
26     except OSError:
27         pass # Failing is fine, we just can't print the version then
28
29     return version
30
31 def return_storages():
32     "returns all the storage plugins that are living in tiramisu/storage"
33     here = dirname(abspath(__file__))
34     storages_path = normpath(join(here, 'tiramisu', 'storage'))
35     dir_content = [ content for content in listdir(storages_path) \
36                     if not content =='__pycache__']
37     storages = filter(isdir, [join(storages_path, content) \
38                       for content in dir_content])
39     storage_list = [basename(storage) for storage in storages]
40     return storage_list
41
42 packages = ['tiramisu', 'tiramisu.storage']
43 packages.extend(return_storages())
44
45 setup(
46     author='cadoles team',
47     author_email='contact@cadoles.com',
48     name='tiramisu',
49     version=fetch_version(),
50     description='configuration management tool',
51     url='http://labs.libre-entreprise.org/projects/tiramisu',
52     packages=packages
53 )