diff --git a/setup.py b/setup.py index f3ced3f01c..ee626184a1 100755 --- a/setup.py +++ b/setup.py @@ -19,6 +19,7 @@ locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') VERSION = '0.12.0.dev99999999999999' +DEPENDENCY_LINKS = [] SETUP_COMMANDS = {} @@ -62,7 +63,8 @@ class BuildDocsCommand(setuptools.command.build_py.build_py): def initialize_options(self): setup_dir = os.path.join(os.getcwd(), __dir__) docs_dir = os.path.join(setup_dir, 'docs') - source_docs_dir = os.path.join(setup_dir, 'docs/API') + source_docs_dir = os.path.join(docs_dir, + 'source/') set_python_path(setup_dir) @@ -96,14 +98,42 @@ def run(self): SETUP_COMMANDS['docs'] = BuildDocsCommand __dir__ = os.path.dirname(__file__) -filename = os.path.join(__dir__, 'requirements.txt') -with open(filename) as requirements: - required = requirements.read().splitlines() - required.remove('-r bear-requirements.txt') -filename = os.path.join(__dir__, 'test-requirements.txt') -with open(filename) as requirements: - test_required = requirements.read().splitlines() + +def read_requirements(filename): + """ + Parse a requirements file. + + Accepts vcs+ links, and places the URL into + `DEPENDENCY_LINKS`. + + :return: list of str for each package + """ + data = [] + filename = os.path.join(__dir__, filename) + with open(filename) as requirements: + required = requirements.read().splitlines() + for line in required: + if not line or line.startswith('#'): + continue + + if '+' in line[:4]: + repo_link, egg_name = line.split('#egg=') + if not egg_name: + raise ValueError('Unknown requirement: {0}' + .format(line)) + + DEPENDENCY_LINKS.append(repo_link) + + line = egg_name.replace('-', '==') + + data.append(line) + + +required = read_requirements('requirements.txt') +required.remove('-r bear-requirements.txt') + +test_required = read_requirements('test-requirements.txt') filename = os.path.join(__dir__, 'README.rst') with open(filename) as readme: @@ -149,6 +179,7 @@ def run(self): install_requires=required, extras_require=EXTRAS_REQUIRE, tests_require=test_required, + dependency_links=DEPENDENCY_LINKS, package_data={'bears': ['VERSION'], 'bears.java': ['checkstyle.jar', 'google_checks.xml'], 'bears.scala': ['scalastyle.jar',