packages/python-packages/tox-monorepo/tox_monorepo/monorepo.py (67 lines of code) (raw):

# Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. import pluggy from tox.reporter import verbosity0 import pdb import os import py hookimpl = pluggy.HookimplMarker("tox") def replace_command_list(old_path, new_path, command_list): if command_list is not None: for command_index, command_item in enumerate(command_list): if command_item is not None: for sub_command_index, sub_command_item in enumerate(command_item): command_item[sub_command_index] = sub_command_item.replace( old_path, new_path ) # used to update a specific TestEnv object def update_env(old_path, new_path, environment_config): # update commands replace_command_list(old_path, new_path, environment_config.commands) replace_command_list(old_path, new_path, environment_config.commands_pre) replace_command_list(old_path, new_path, environment_config.commands_post) # update environment configs environment_config.envdir = py.path.local( environment_config.envdir.strpath.replace(old_path, new_path) ) environment_config.changedir = py.path.local( environment_config.changedir.strpath.replace(old_path, new_path) ) environment_config.envtmpdir = py.path.local( environment_config.envtmpdir.strpath.replace(old_path, new_path) ) environment_config.envlogdir = py.path.local( environment_config.envlogdir.strpath.replace(old_path, new_path) ) # update the cachedir environment_config.setenv["TOX_ENV_DIR"] = environment_config.setenv[ "TOX_ENV_DIR" ].replace(old_path, new_path) @hookimpl def tox_configure(config): invocationcwd = config.invocationcwd.strpath original_toxinipath = config.toxinidir.strpath if config.toxinidir: config.toxinidir = py.path.local( config.toxinidir.strpath.replace(original_toxinipath, invocationcwd) ) if config.toxworkdir: config.toxworkdir = py.path.local( config.toxworkdir.strpath.replace(original_toxinipath, invocationcwd) ) if config.temp_dir: config.temp_dir = py.path.local( config.temp_dir.strpath.replace(original_toxinipath, invocationcwd) ) if config.setupdir: config.setupdir = py.path.local( config.setupdir.strpath.replace(original_toxinipath, invocationcwd) ) if config.distdir: config.distdir = py.path.local( config.distdir.strpath.replace(original_toxinipath, invocationcwd) ) if config.sdistsrc: config.sdistsrc = py.path.local( config.sdistsrc.strpath.replace(original_toxinipath, invocationcwd) ) if config.logdir: config.logdir = py.path.local( config.logdir.strpath.replace(original_toxinipath, invocationcwd) ) for environment_name, environment_config in config.envconfigs.items(): update_env(original_toxinipath, invocationcwd, environment_config)