doc: Rework and modernise documentation
[git-cola.git] / setup.py
blobd639eda86b8023335b7630e04752f00017f3ef08
1 #!/usr/bin/env python
3 import os
4 import sys
5 import platform
6 from glob import glob
7 from distutils.core import setup
9 # Look for modules in the root
10 srcdir = os.path.dirname(os.path.abspath(__file__))
12 from extras import cmdclass
13 from cola import version
16 def main():
17 _check_python_version()
18 _check_git_version()
19 _check_pyqt_version()
20 _run_setup()
23 def _check_python_version():
24 """Check the minimum Python version
25 """
26 pyver = platform.python_version()
27 if not version.check('python', pyver):
28 print >> sys.stderr, ('Python version %s or newer required. '
29 'Found %s' % (version.get('python'), pyver))
30 sys.exit(1)
33 def _check_git_version():
34 """Check the minimum GIT version
35 """
36 git_version = version.git_version()
37 if not version.check('git', git_version):
38 print >> sys.stderr, ('GIT version %s or newer required. '
39 'Found %s' % (version.get('git'), git_version))
40 sys.exit(1)
43 def _check_pyqt_version():
44 """Check the minimum PyQt version
45 """
46 pyqtver = 'None'
47 try:
48 from PyQt4 import QtCore
49 pyqtver = QtCore.PYQT_VERSION_STR
50 if version.check('pyqt', pyqtver):
51 return
52 except ImportError:
53 pass
54 print >> sys.stderr, ('PyQt4 version %s or newer required. '
55 'Found %s' % (version.get('pyqt'), pyqtver))
56 sys.exit(1)
59 def _run_setup():
60 """Runs distutils.setup()"""
62 scripts = [
63 'bin/git-cola',
64 'bin/git-dag',
67 if sys.platform == 'win32':
68 scripts.append('win32/cola')
70 setup(name = 'git-cola',
71 version = version.version(),
72 description = 'The highly caffeinated git GUI',
73 license = 'GPLv2',
74 author = 'The git-cola community',
75 author_email = 'git-cola@googlegroups.com',
76 url = 'http://git-cola.github.com/',
77 long_description = 'A sleek and powerful git GUI',
78 scripts = scripts,
79 cmdclass = cmdclass,
80 data_files = cola_data_files())
83 def cola_data_files():
84 data = [
85 _app_path('share/git-cola/icons', '*.png'),
86 _app_path('share/git-cola/icons', '*.svg'),
87 _app_path('share/applications', '*.desktop'),
88 _app_path('share/doc/git-cola', '*.txt'),
89 _app_path('share/doc/git-cola', '*.html'),
90 _package('cola'),
91 _package('cola.classic'),
92 _package('cola.dag'),
93 _package('cola.main'),
94 _package('cola.merge'),
95 _package('cola.models'),
96 _package('cola.prefs'),
97 _package('cola.stash'),
98 _package('cola.widgets'),
101 data.extend([_app_path(localedir, 'git-cola.mo')
102 for localedir in glob('share/locale/*/LC_MESSAGES')])
104 if sys.platform == 'darwin':
105 data.append(_app_path('share/git-cola/bin', 'ssh-askpass-darwin'))
106 else:
107 data.append(_app_path('share/git-cola/bin', 'ssh-askpass'))
108 return data
111 def _package(package, subdir=None):
112 subdirs = package.split('.')
113 app_dir = os.path.join('share', 'git-cola', 'lib', *subdirs)
114 if subdir:
115 subdirs.insert(0, subdir)
116 src_dir = os.path.join(*subdirs)
117 return (app_dir, glob(os.path.join(src_dir, '*.py')))
120 def _app_path(dirname, entry):
121 return (dirname, glob(os.path.join(dirname, entry)))
124 if __name__ == '__main__':
125 main()