Skip to content

Commit

Permalink
Merge pull request #2723 from pre-commit/coursier-cache
Browse files Browse the repository at this point in the history
ensure coursier hooks are available offline after install
  • Loading branch information
asottile committed Jan 25, 2023
2 parents 6b88fe5 + 83e05e6 commit 6d3a7ee
Showing 1 changed file with 22 additions and 23 deletions.
45 changes: 22 additions & 23 deletions pre_commit/languages/coursier.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,45 +28,44 @@ def install_environment(
helpers.assert_version_default('coursier', version)

# Support both possible executable names (either "cs" or "coursier")
executable = find_executable('cs') or find_executable('coursier')
if executable is None:
cs = find_executable('cs') or find_executable('coursier')
if cs is None:
raise AssertionError(
'pre-commit requires system-installed "cs" or "coursier" '
'executables in the application search path',
)

envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
channel = prefix.path('.pre-commit-channel')
if os.path.isdir(channel):
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',

def _install(*opts: str) -> None:
assert cs is not None
helpers.run_setup_cmd(prefix, (cs, 'fetch', *opts))
helpers.run_setup_cmd(prefix, (cs, 'install', '--dir', envdir, *opts))

with in_env(prefix, version):
channel = prefix.path('.pre-commit-channel')
if os.path.isdir(channel):
for app_descriptor in os.listdir(channel):
_, app_file = os.path.split(app_descriptor)
app, _ = os.path.splitext(app_file)
_install(
'--default-channels=false',
'--channel', channel,
'--dir', envdir,
app,
),
)
elif not additional_dependencies:
raise FatalError(
'expected .pre-commit-channel dir or additional_dependencies',
)
elif not additional_dependencies:
raise FatalError(
'expected .pre-commit-channel dir or additional_dependencies',
)

if additional_dependencies:
install_cmd = (
executable, 'install', '--dir', envdir, *additional_dependencies,
)
helpers.run_setup_cmd(prefix, install_cmd)
if additional_dependencies:
_install(*additional_dependencies)


def get_env_patch(target_dir: str) -> PatchesT:
return (
('PATH', (target_dir, os.pathsep, Var('PATH'))),
('COURSIER_CACHE', os.path.join(target_dir, '.cs-cache')),
)


Expand Down

0 comments on commit 6d3a7ee

Please sign in to comment.