def _vendor_requirements(requirements: List[_Requirement]) -> None: """ Clone vendored requirements. """ target_directories = set(requirement.target_directory for requirement in requirements) for target_directory in target_directories: target_directory.mkdir(exist_ok=True) init_file = Path(target_directory) / '__init__.py' Path(init_file).touch() for requirement in requirements: uri = 'git+{https_address}@{reference}'.format( https_address=requirement.https_address, reference=requirement.git_reference, ) subprocess.check_call([ 'pip', 'install', '--no-dependencies', '--no-binary', ':all:', '--target', str(requirement.target_directory), uri, ], ) for target_directory in target_directories: # Ideally we would not use a protected function, however, this # trade-off has been considered - we want to use the vendored # ``dcos_test_utils`` from the vendored ``dcos_launch``. package_names = [ requirement.package_name for requirement in requirements if requirement.target_directory == target_directory ] vendorize._rewrite_imports( # pylint: disable=protected-access target_directory=target_directory, top_level_names=package_names, )
def main() -> None: """ We vendor some requirements. We use our own script as we want the vendored ``dcos_launch`` to use the vendored ``dcos_test_utils``. """ dcos_e2e_target_directory = Path('src/dcos_e2e/_vendor') dcos_cli_target_directory = Path('src/cli/_vendor') dcos_launch = _Requirement( target_directory=dcos_e2e_target_directory, package_name='dcos_launch', https_address='https://github.com/dcos/dcos-launch', git_reference='2442b5246684c0663162e51136b2fe7a5c7ef3e1', ) test_utils = _Requirement( target_directory=dcos_e2e_target_directory, package_name='dcos_test_utils', https_address='https://github.com/dcos/dcos-test-utils', git_reference='5361c8623cd0751f9312cf79b66dde6f09da1e74', ) # We have a fix at https://github.com/click-contrib/sphinx-click/pull/27 # that we require. sphinx_click = _Requirement( target_directory=dcos_e2e_target_directory, package_name='sphinx_click', https_address='https://github.com/adamtheturtle/sphinx-click', git_reference='fix-envvar-duplicates', ) vertigo_e2e = _Requirement( target_directory=dcos_e2e_target_directory, package_name='vertigo', https_address='https://github.com/adamtheturtle/vertigo', git_reference='77d7aa5d994e2650ece9e8aded6e9bffda21a2ac', ) vertigo_cli = _Requirement( target_directory=dcos_cli_target_directory, package_name='vertigo', https_address='https://github.com/adamtheturtle/vertigo', git_reference='77d7aa5d994e2650ece9e8aded6e9bffda21a2ac', ) requirements = [ dcos_launch, test_utils, sphinx_click, vertigo_e2e, vertigo_cli, ] target_directories = set(requirement.target_directory for requirement in requirements) for target_directory in target_directories: try: target_directory.mkdir(exist_ok=False) except FileExistsError: message = ( 'Error: {target_directory} exists. ' 'Run the following commands before running this script again:' '\n\n' 'git rm -rf {target_directory}\n' 'rm -rf {target_directory}') print(message.format(target_directory=target_directory)) sys.exit(1) init_file = Path(target_directory) / '__init__.py' Path(init_file).touch() for requirement in requirements: uri = 'git+{https_address}@{reference}'.format( https_address=requirement.https_address, reference=requirement.git_reference, ) subprocess.check_call([ 'pip', 'install', '--no-dependencies', '--target', str(requirement.target_directory), uri, ], ) for target_directory in target_directories: # Ideally we would not use a protected function, however, this # trade-off has been considered - we want to use the vendored # ``dcos_test_utils`` from the vendored ``dcos_launch``. package_names = [ requirement.package_name for requirement in requirements if requirement.target_directory == target_directory ] vendorize._rewrite_imports( # pylint: disable=protected-access target_directory=target_directory, top_level_names=package_names, )
def main() -> None: """ We vendor some requirements. We use our own script as we want the vendored ``dcos_launch`` to use the vendored ``dcos_test_utils``. """ vendored_launch_sha = 'b8110fad0afa08ecfd8e06630e44799eb136eba4' vendored_test_utils_sha = '00f1a62ef673ebc34e29d9db488dd06b0c1ae4ec' launch = 'git+https://github.com/dcos/dcos-launch@{sha}'.format( sha=vendored_launch_sha, ) test_utils = 'git+https://github.com/dcos/dcos-test-utils@{sha}'.format( sha=vendored_test_utils_sha, ) # We have a fix at https://github.com/click-contrib/sphinx-click/pull/27 # that we require. sphinx_click = ( 'git+https://github.com/adamtheturtle/sphinx-click@' 'fix-envvar-duplicates' ) package_name_to_uri = { 'dcos_launch': launch, 'dcos_test_utils': test_utils, 'sphinx_click': sphinx_click, } target_directory = Path('src/dcos_e2e/_vendor') try: target_directory.mkdir(exist_ok=False) except FileExistsError: message = ( 'Error: {target_directory} exists. ' 'Run the following commands before running this script again:' '\n\n' 'git rm -rf {target_directory}\n' 'rm -rf src/dcos_e2e/_vendor' ) print(message.format(target_directory=target_directory)) sys.exit(1) init_file = Path(target_directory) / '__init__.py' Path(init_file).touch() for _, requirement in package_name_to_uri.items(): subprocess.check_call( [ 'pip', 'install', '--no-dependencies', '--target', str(target_directory), requirement, ], ) # Ideally we would not use a protected function, however, this trade-off # has been considered - we want to use the vendored ``dcos_test_utils`` # from the vendored ``dcos_launch``. vendorize._rewrite_imports( # pylint: disable=protected-access target_directory=target_directory, top_level_names=list(package_name_to_uri.keys()), )