forked from coala/coala-bears
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
executable file
·114 lines (89 loc) · 3.92 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/env python3
import locale
import sys
from subprocess import call
import setuptools.command.build_py
from bears import Constants
from setuptools import find_packages, setup
from setuptools.command.test import test as TestCommand
try:
locale.getlocale()
except (ValueError, UnicodeError):
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
class PyTestCommand(TestCommand):
def run_tests(self):
# import here, cause outside the eggs aren't loaded
import pytest
errno = pytest.main([])
sys.exit(errno)
class BuildDocsCommand(setuptools.command.build_py.build_py):
apidoc_command = ('sphinx-apidoc', '-f', '-o', 'docs/API',
'bears')
make_command = ('make', '-C', 'docs', 'html', 'SPHINXOPTS=-W')
def run(self):
err_no = call(self.apidoc_command)
if not err_no:
err_no = call(self.make_command)
sys.exit(err_no)
with open('requirements.txt') as requirements:
required = requirements.read().splitlines()
required.remove('-r bear-requirements.txt')
with open('bear-requirements.txt') as requirements:
bear_required = requirements.read().splitlines()
with open('test-requirements.txt') as requirements:
test_required = requirements.read().splitlines()
with open('ignore.txt') as ignore:
ignore_requirements = ignore.read().splitlines()
with open('README.rst') as readme:
long_description = readme.read()
extras_require = {
'alldeps': bear_required,
}
# For the average user we leave out some of the more complicated requirements,
# e.g. language-check (needs java).
required += [req for req in bear_required
if not any(req.startswith(ignore)
for ignore in ignore_requirements)]
if __name__ == '__main__':
setup(name='coala-bears',
version=Constants.VERSION,
description='Bears for coala (Code Analysis Application)',
author='The coala developers',
maintainer='Lasse Schuirmann, Fabian Neuschmidt, Mischa Kr\xfcger',
maintainer_email=('[email protected], '
url='http://coala.io/',
platforms='any',
packages=find_packages(exclude=('build.*', 'tests', 'tests.*')),
install_requires=required,
extras_require=extras_require,
tests_require=test_required,
package_data={'bears': ['VERSION'],
'bears.java': ['checkstyle.jar', 'google_checks.xml'],
'bears.scala': ['scalastyle.jar',
'scalastyle_config.xml']},
license='AGPL-3.0',
long_description=long_description,
entry_points={'coalabears': ['coala_official_bears = bears']},
# from http://pypi.python.org/pypi?%3Aaction=list_classifiers
classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Plugins',
'Environment :: MacOS X',
'Environment :: Win32 (MS Windows)',
'Environment :: X11 Applications :: Gnome',
'Intended Audience :: Science/Research',
'Intended Audience :: Developers',
'License :: OSI Approved :: GNU Affero General Public License '
'v3 or later (AGPLv3+)',
'Operating System :: OS Independent',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3 :: Only',
'Topic :: Scientific/Engineering :: Information Analysis',
'Topic :: Software Development :: Quality Assurance',
'Topic :: Text Processing :: Linguistic'],
cmdclass={'docs': BuildDocsCommand,
'test': PyTestCommand})