setup.py
132 lines
| 4.0 KiB
| text/x-python
|
PythonLexer
r136 | # -*- coding: utf-8 -*- | |||
r0 | # RhodeCode VCSServer provides access to different vcs backends via network. | |||
# Copyright (C) 2014-2016 RodeCode GmbH | ||||
# | ||||
# This program is free software; you can redistribute it and/or modify | ||||
# it under the terms of the GNU General Public License as published by | ||||
# the Free Software Foundation; either version 3 of the License, or | ||||
# (at your option) any later version. | ||||
# | ||||
# This program is distributed in the hope that it will be useful, | ||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
# GNU General Public License for more details. | ||||
# | ||||
# You should have received a copy of the GNU General Public License | ||||
# along with this program; if not, write to the Free Software Foundation, | ||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
r136 | # Import early to make sure things are patched up properly | |||
r0 | from setuptools import setup, find_packages | |||
r136 | ||||
import os | ||||
import sys | ||||
import pkgutil | ||||
import platform | ||||
from pip.download import PipSession | ||||
from pip.req import parse_requirements | ||||
r0 | from codecs import open | |||
r136 | if sys.version_info < (2, 7): | |||
raise Exception('VCSServer requires Python 2.7 or later') | ||||
here = os.path.abspath(os.path.dirname(__file__)) | ||||
# defines current platform | ||||
__platform__ = platform.system() | ||||
__license__ = 'GPL V3' | ||||
__author__ = 'RhodeCode GmbH' | ||||
__url__ = 'https://code.rhodecode.com' | ||||
is_windows = __platform__ in ('Windows',) | ||||
def _get_requirements(req_filename, exclude=None, extras=None): | ||||
extras = extras or [] | ||||
exclude = exclude or [] | ||||
r0 | ||||
r136 | try: | |||
parsed = parse_requirements( | ||||
os.path.join(here, req_filename), session=PipSession()) | ||||
except TypeError: | ||||
# try pip < 6.0.0, that doesn't support session | ||||
parsed = parse_requirements(os.path.join(here, req_filename)) | ||||
requirements = [] | ||||
for ir in parsed: | ||||
if ir.req and ir.name not in exclude: | ||||
requirements.append(str(ir.req)) | ||||
return requirements + extras | ||||
# requirements extract | ||||
setup_requirements = ['pytest-runner'] | ||||
install_requirements = _get_requirements( | ||||
'requirements.txt', exclude=['setuptools']) | ||||
test_requirements = _get_requirements( | ||||
'requirements_test.txt', extras=['configobj']) | ||||
r0 | ||||
def get_version(): | ||||
version = pkgutil.get_data('vcsserver', 'VERSION') | ||||
return version.strip() | ||||
r136 | # additional files that goes into package itself | |||
package_data = { | ||||
'': ['*.txt', '*.rst'], | ||||
'configs': ['*.ini'], | ||||
'vcsserver': ['VERSION'], | ||||
} | ||||
r0 | ||||
r136 | description = 'Version Control System Server' | |||
keywords = ' '.join([ | ||||
'CLI', 'RhodeCode', 'RhodeCode Enterprise', 'RhodeCode Tools']) | ||||
r0 | ||||
r136 | # README/DESCRIPTION generation | |||
readme_file = 'README.rst' | ||||
changelog_file = 'CHANGES.rst' | ||||
try: | ||||
long_description = open(readme_file).read() + '\n\n' + \ | ||||
open(changelog_file).read() | ||||
except IOError as err: | ||||
sys.stderr.write( | ||||
"[WARNING] Cannot find file specified as long_description (%s)\n " | ||||
"or changelog (%s) skipping that file" % (readme_file, changelog_file)) | ||||
long_description = description | ||||
r0 | ||||
setup( | ||||
name='rhodecode-vcsserver', | ||||
version=get_version(), | ||||
r136 | description=description, | |||
r0 | long_description=long_description, | |||
r136 | keywords=keywords, | |||
license=__license__, | ||||
author=__author__, | ||||
r0 | author_email='marcin@rhodecode.com', | |||
r136 | url=__url__, | |||
setup_requires=setup_requirements, | ||||
install_requires=install_requirements, | ||||
tests_require=test_requirements, | ||||
zip_safe=False, | ||||
packages=find_packages(exclude=["docs", "tests*"]), | ||||
package_data=package_data, | ||||
include_package_data=True, | ||||
r0 | classifiers=[ | |||
r136 | 'Development Status :: 6 - Mature', | |||
r0 | 'Intended Audience :: Developers', | |||
r136 | 'Operating System :: OS Independent', | |||
r0 | 'Topic :: Software Development :: Version Control', | |||
'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', | ||||
'Programming Language :: Python :: 2.7', | ||||
], | ||||
entry_points={ | ||||
'console_scripts': [ | ||||
'vcsserver=vcsserver.main:main', | ||||
], | ||||
'paste.app_factory': ['main=vcsserver.http_main:main'] | ||||
}, | ||||
) | ||||