def install_environment( prefix: Prefix, version: str, additional_dependencies: Sequence[str], ) -> None: # pragma: win32 no cover helpers.assert_version_default('coursier', version) helpers.assert_no_additional_deps('coursier', additional_dependencies) # Support both possible executable names (either "cs" or "coursier") executable = find_executable('cs') or find_executable('coursier') if executable is None: raise AssertionError( 'pre-commit requires system-installed "cs" or "coursier" ' 'executables in the application search path', ) envdir = prefix.path(helpers.environment_dir(ENVIRONMENT_DIR, version)) channel = prefix.path('.pre-commit-channel') with clean_path_on_failure(envdir): for app_descriptor in os.listdir(channel): _, app_file = os.path.split(app_descriptor) app, _ = os.path.splitext(app_file) helpers.run_setup_cmd( prefix, ( executable, 'install', '--default-channels=false', f'--channel={channel}', app, f'--dir={envdir}', ), )
def test_assert_no_additional_deps(): with pytest.raises(AssertionError) as excinfo: helpers.assert_no_additional_deps('lang', ['hmmm']) msg, = excinfo.value.args assert msg == ( 'For now, pre-commit does not support additional_dependencies for lang' )
def install_environment( prefix: Prefix, version: str, additional_dependencies: Sequence[str], ) -> None: # pragma: win32 no cover helpers.assert_version_default('coursier', version) helpers.assert_no_additional_deps('coursier', additional_dependencies) envdir = prefix.path(helpers.environment_dir(ENVIRONMENT_DIR, version)) channel = prefix.path('.pre-commit-channel') with clean_path_on_failure(envdir): for app_descriptor in os.listdir(channel): _, app_file = os.path.split(app_descriptor) app, _ = os.path.splitext(app_file) helpers.run_setup_cmd( prefix, ( 'cs', 'install', '--default-channels=false', f'--channel={channel}', app, f'--dir={envdir}', ), )
def install_environment( prefix: Prefix, version: str, additional_dependencies: Sequence[str], ) -> None: helpers.assert_version_default('dotnet', version) helpers.assert_no_additional_deps('dotnet', additional_dependencies) envdir = prefix.path(helpers.environment_dir(ENVIRONMENT_DIR, version)) with clean_path_on_failure(envdir): build_dir = 'pre-commit-build' # Build & pack nupkg file helpers.run_setup_cmd( prefix, ( 'dotnet', 'pack', '--configuration', 'Release', '--output', build_dir, ), ) # Determine tool from the packaged file <tool_name>.<version>.nupkg build_outputs = os.listdir(os.path.join(prefix.prefix_dir, build_dir)) if len(build_outputs) != 1: raise NotImplementedError( f"Can't handle multiple build outputs. Got {build_outputs}", ) tool_name = build_outputs[0].split('.')[0] # Install to bin dir helpers.run_setup_cmd( prefix, ( 'dotnet', 'tool', 'install', '--tool-path', os.path.join(envdir, BIN_DIR), '--add-source', build_dir, tool_name, ), ) # Cleanup build output for d in ('bin', 'obj', build_dir): rmtree(prefix.path(d))
def install_environment( prefix: Prefix, version: str, additional_dependencies: Sequence[str], ) -> None: # pragma: win32 no cover helpers.assert_version_default('docker', version) helpers.assert_no_additional_deps('docker', additional_dependencies) directory = prefix.path( helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT), ) # Docker doesn't really have relevant disk environment, but pre-commit # still needs to cleanup its state files on failure with clean_path_on_failure(directory): build_docker_image(prefix, pull=True) os.mkdir(directory)
def install_environment( prefix: Prefix, version: str, additional_dependencies: Sequence[str], ) -> None: helpers.assert_version_default('dotnet', version) helpers.assert_no_additional_deps('dotnet', additional_dependencies) envdir = prefix.path(helpers.environment_dir(ENVIRONMENT_DIR, version)) with clean_path_on_failure(envdir): build_dir = 'pre-commit-build' # Build & pack nupkg file helpers.run_setup_cmd( prefix, ( 'dotnet', 'pack', '--configuration', 'Release', '--output', build_dir, ), ) # Determine tool from the packaged file <tool_name>.<version>.nupkg build_outputs = os.listdir(os.path.join(prefix.prefix_dir, build_dir)) for output in build_outputs: tool_name = output.split('.')[0] # Install to bin dir helpers.run_setup_cmd( prefix, ( 'dotnet', 'tool', 'install', '--tool-path', os.path.join(envdir, BIN_DIR), '--add-source', build_dir, tool_name, ), ) # Clean the git dir, ignoring the environment dir clean_cmd = ('git', 'clean', '-ffxd', '-e', f'{ENVIRONMENT_DIR}-*') helpers.run_setup_cmd(prefix, clean_cmd)
def install_environment( prefix, version, additional_dependencies, ): # pragma: windows no cover helpers.assert_version_default('docker', version) helpers.assert_no_additional_deps('docker', additional_dependencies) assert_docker_available() directory = prefix.path( helpers.environment_dir(ENVIRONMENT_DIR, 'default'), ) # Docker doesn't really have relevant disk environment, but pre-commit # still needs to cleanup it's state files on failure with clean_path_on_failure(directory): build_docker_image(prefix, pull=True) os.mkdir(directory)
def install_environment( prefix, version, additional_dependencies, ): # pragma: windows no cover helpers.assert_version_default('docker', version) helpers.assert_no_additional_deps('docker', additional_dependencies) assert_docker_available() directory = prefix.path( helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT), ) # Docker doesn't really have relevant disk environment, but pre-commit # still needs to cleanup it's state files on failure with clean_path_on_failure(directory): build_docker_image(prefix, pull=True) os.mkdir(directory)
def install_environment( prefix, version, additional_dependencies, ): # pragma: windows no cover helpers.assert_version_default('swift', version) helpers.assert_no_additional_deps('swift', additional_dependencies) directory = prefix.path( helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT), ) # Build the swift package with clean_path_on_failure(directory): os.mkdir(directory) cmd_output( 'swift', 'build', '-C', prefix.prefix_dir, '-c', BUILD_CONFIG, '--build-path', os.path.join(directory, BUILD_DIR), )
def install_environment( repo_cmd_runner, version, additional_dependencies, ): # pragma: windows no cover helpers.assert_version_default('swift', version) helpers.assert_no_additional_deps('swift', additional_dependencies) directory = repo_cmd_runner.path( helpers.environment_dir(ENVIRONMENT_DIR, 'default'), ) # Build the swift package with clean_path_on_failure(directory): os.mkdir(directory) repo_cmd_runner.run(( 'swift', 'build', '-C', '{prefix}', '-c', BUILD_CONFIG, '--build-path', os.path.join(directory, BUILD_DIR), ))
def install_environment( repo_cmd_runner, version, additional_dependencies, ): # pragma: windows no cover assert repo_cmd_runner.exists('Dockerfile'), ( 'No Dockerfile was found in the hook repository') helpers.assert_version_default('docker', version) helpers.assert_no_additional_deps('docker', additional_dependencies) assert_docker_available() directory = repo_cmd_runner.path( helpers.environment_dir(ENVIRONMENT_DIR, 'default'), ) # Docker doesn't really have relevant disk environment, but pre-commit # still needs to cleanup it's state files on failure with clean_path_on_failure(directory): build_docker_image(repo_cmd_runner, pull=True) os.mkdir(directory)
def install_environment( repo_cmd_runner, version, additional_dependencies, ): # pragma: windows no cover assert repo_cmd_runner.exists('Dockerfile'), ( 'No Dockerfile was found in the hook repository' ) helpers.assert_version_default('docker', version) helpers.assert_no_additional_deps('docker', additional_dependencies) assert_docker_available() directory = repo_cmd_runner.path( helpers.environment_dir(ENVIRONMENT_DIR, 'default'), ) # Docker doesn't really have relevant disk environment, but pre-commit # still needs to cleanup it's state files on failure with clean_path_on_failure(directory): build_docker_image(repo_cmd_runner, pull=True) os.mkdir(directory)
def install_environment( prefix: Prefix, version: str, additional_dependencies: Sequence[str], ) -> None: # pragma: win32 no cover helpers.assert_version_default("swift", version) helpers.assert_no_additional_deps("swift", additional_dependencies) directory = prefix.path( helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT), ) # Build the swift package with clean_path_on_failure(directory): os.mkdir(directory) cmd_output_b( "swift", "build", "-C", prefix.prefix_dir, "-c", BUILD_CONFIG, "--build-path", os.path.join(directory, BUILD_DIR), )