windows: Add support for SSH (#29145)

Closes #19892

This PR builds on top of #20587 and improves upon it.

Release Notes:

- N/A

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
This commit is contained in:
张小白 2025-07-08 22:34:57 +08:00 committed by GitHub
parent 8bd739d869
commit 0ca0914cca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 1435 additions and 354 deletions

View file

@ -33,7 +33,7 @@ use http_client::HttpClient;
use language::{Buffer, LanguageToolchainStore, language_settings::InlayHintKind};
use node_runtime::NodeRuntime;
use remote::SshRemoteClient;
use remote::{SshRemoteClient, ssh_session::SshArgs};
use rpc::{
AnyProtoClient, TypedEnvelope,
proto::{self},
@ -253,11 +253,16 @@ impl DapStore {
cx.spawn(async move |_, cx| {
let response = request.await?;
let binary = DebugAdapterBinary::from_proto(response)?;
let mut ssh_command = ssh_client.read_with(cx, |ssh, _| {
anyhow::Ok(SshCommand {
arguments: ssh.ssh_args().context("SSH arguments not found")?,
})
})??;
let (mut ssh_command, envs, path_style) =
ssh_client.read_with(cx, |ssh, _| {
let (SshArgs { arguments, envs }, path_style) =
ssh.ssh_info().context("SSH arguments not found")?;
anyhow::Ok((
SshCommand { arguments },
envs.unwrap_or_default(),
path_style,
))
})??;
let mut connection = None;
if let Some(c) = binary.connection {
@ -282,12 +287,13 @@ impl DapStore {
binary.cwd.as_deref(),
binary.envs,
None,
path_style,
);
Ok(DebugAdapterBinary {
command: Some(program),
arguments: args,
envs: HashMap::default(),
envs,
cwd: None,
connection,
request_args: binary.request_args,