From da4b97c5fa70f1e15123255f0c69c03c809b2b18 Mon Sep 17 00:00:00 2001 From: David Brownman Date: Mon, 2 Sep 2024 10:33:04 -0700 Subject: [PATCH] fix: Ensure dependencies are available for alternative backends (#2532) * ensure dependencies are loaded for experimental backends * fix cargo-binstall * fix test * simplicy e2e test --- e2e/backend/test_npm | 1 + src/backend/cargo.rs | 1 + src/backend/mod.rs | 8 ++++++-- src/backend/npm.rs | 1 + src/backend/pipx.rs | 2 ++ src/backend/ubi.rs | 3 ++- 6 files changed, 13 insertions(+), 3 deletions(-) diff --git a/e2e/backend/test_npm b/e2e/backend/test_npm index 0b0f4efff..2e8612a76 100644 --- a/e2e/backend/test_npm +++ b/e2e/backend/test_npm @@ -6,3 +6,4 @@ export NPM_CONFIG_FUND=false mise use node assert "mise x npm:prettier@3.1.0 -- prettier -v" "3.1.0" assert "FORCE_COLOR=0 mise x npm:@antfu/ni@0.21.12 -- ni -v 2>/dev/null | head -n1" "@antfu/ni v0.21.12" +assert_succeed "mise install npm:tldr@3.4.0" diff --git a/src/backend/cargo.rs b/src/backend/cargo.rs index 77045f8be..857a7ef05 100644 --- a/src/backend/cargo.rs +++ b/src/backend/cargo.rs @@ -105,6 +105,7 @@ impl Backend for CargoBackend { .with_pr(ctx.pr.as_ref()) .envs(ctx.ts.env_with_path(&config)?) .prepend_path(ctx.ts.list_paths())? + .prepend_path(self.depedency_toolset()?.list_paths())? .execute()?; Ok(()) diff --git a/src/backend/mod.rs b/src/backend/mod.rs index 918c92df6..2a935a8aa 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -476,7 +476,7 @@ pub trait Backend: Debug + Send + Sync { tv.cache_path().join("incomplete") } - fn dependency_env(&self) -> eyre::Result> { + fn depedency_toolset(&self) -> eyre::Result { let config = Config::get(); let dependencies = self .get_all_dependencies(&ToolRequest::System(self.name().into()))? @@ -487,7 +487,11 @@ pub trait Backend: Debug + Send + Sync { .filter_by_tool(&dependencies) .into(); ts.resolve()?; - ts.full_env() + Ok(ts) + } + + fn dependency_env(&self) -> eyre::Result> { + self.depedency_toolset()?.full_env() } } diff --git a/src/backend/npm.rs b/src/backend/npm.rs index ed6621db8..ce6e90598 100644 --- a/src/backend/npm.rs +++ b/src/backend/npm.rs @@ -71,6 +71,7 @@ impl Backend for NPMBackend { .with_pr(ctx.pr.as_ref()) .envs(ctx.ts.env_with_path(&config)?) .prepend_path(ctx.ts.list_paths())? + .prepend_path(self.depedency_toolset()?.list_paths())? .execute()?; Ok(()) diff --git a/src/backend/pipx.rs b/src/backend/pipx.rs index 4de12c53a..d1b53df6a 100644 --- a/src/backend/pipx.rs +++ b/src/backend/pipx.rs @@ -96,6 +96,7 @@ impl Backend for PIPXBackend { .prepend_path(ctx.ts.list_paths())? // Prepend install path so pipx doesn't issue a warning about missing path .prepend_path(vec![ctx.tv.install_path().join("bin")])? + .prepend_path(self.depedency_toolset()?.list_paths())? .execute()?; } else { CmdLineRunner::new("pipx") @@ -108,6 +109,7 @@ impl Backend for PIPXBackend { .prepend_path(ctx.ts.list_paths())? // Prepend install path so pipx doesn't issue a warning about missing path .prepend_path(vec![ctx.tv.install_path().join("bin")])? + .prepend_path(self.depedency_toolset()?.list_paths())? .execute()?; } Ok(()) diff --git a/src/backend/ubi.rs b/src/backend/ubi.rs index ddc4afe07..291374c76 100644 --- a/src/backend/ubi.rs +++ b/src/backend/ubi.rs @@ -63,7 +63,8 @@ impl Backend for UbiBackend { .arg(self.name()) .with_pr(ctx.pr.as_ref()) .envs(ctx.ts.env_with_path(&config)?) - .prepend_path(ctx.ts.list_paths())?; + .prepend_path(ctx.ts.list_paths())? + .prepend_path(self.depedency_toolset()?.list_paths())?; if let Some(token) = &*GITHUB_TOKEN { cmd = cmd.env("GITHUB_TOKEN", token);