Support CC migrate-installer
path (#35717)
If we can't find CC in the PATH, we'll now fall back to a known local install path. Release Notes: - N/A
This commit is contained in:
parent
ecd182c52f
commit
3bbd32b70e
3 changed files with 26 additions and 7 deletions
|
@ -89,6 +89,7 @@ impl AgentServerCommand {
|
||||||
pub(crate) async fn resolve(
|
pub(crate) async fn resolve(
|
||||||
path_bin_name: &'static str,
|
path_bin_name: &'static str,
|
||||||
extra_args: &[&'static str],
|
extra_args: &[&'static str],
|
||||||
|
fallback_path: Option<&Path>,
|
||||||
settings: Option<AgentServerSettings>,
|
settings: Option<AgentServerSettings>,
|
||||||
project: &Entity<Project>,
|
project: &Entity<Project>,
|
||||||
cx: &mut AsyncApp,
|
cx: &mut AsyncApp,
|
||||||
|
@ -105,13 +106,24 @@ impl AgentServerCommand {
|
||||||
env: agent_settings.command.env,
|
env: agent_settings.command.env,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
find_bin_in_path(path_bin_name, project, cx)
|
match find_bin_in_path(path_bin_name, project, cx).await {
|
||||||
.await
|
Some(path) => Some(Self {
|
||||||
.map(|path| Self {
|
|
||||||
path,
|
path,
|
||||||
args: extra_args.iter().map(|arg| arg.to_string()).collect(),
|
args: extra_args.iter().map(|arg| arg.to_string()).collect(),
|
||||||
env: None,
|
env: None,
|
||||||
})
|
}),
|
||||||
|
None => fallback_path.and_then(|path| {
|
||||||
|
if path.exists() {
|
||||||
|
Some(Self {
|
||||||
|
path: path.to_path_buf(),
|
||||||
|
args: extra_args.iter().map(|arg| arg.to_string()).collect(),
|
||||||
|
env: None,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,8 +101,15 @@ impl AgentConnection for ClaudeAgentConnection {
|
||||||
settings.get::<AllAgentServersSettings>(None).claude.clone()
|
settings.get::<AllAgentServersSettings>(None).claude.clone()
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
let Some(command) =
|
let Some(command) = AgentServerCommand::resolve(
|
||||||
AgentServerCommand::resolve("claude", &[], settings, &project, cx).await
|
"claude",
|
||||||
|
&[],
|
||||||
|
Some(&util::paths::home_dir().join(".claude/local/claude")),
|
||||||
|
settings,
|
||||||
|
&project,
|
||||||
|
cx,
|
||||||
|
)
|
||||||
|
.await
|
||||||
else {
|
else {
|
||||||
anyhow::bail!("Failed to find claude binary");
|
anyhow::bail!("Failed to find claude binary");
|
||||||
};
|
};
|
||||||
|
|
|
@ -48,7 +48,7 @@ impl AgentServer for Gemini {
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
let Some(command) =
|
let Some(command) =
|
||||||
AgentServerCommand::resolve("gemini", &[ACP_ARG], settings, &project, cx).await
|
AgentServerCommand::resolve("gemini", &[ACP_ARG], None, settings, &project, cx).await
|
||||||
else {
|
else {
|
||||||
anyhow::bail!("Failed to find gemini binary");
|
anyhow::bail!("Failed to find gemini binary");
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue