Cargo.lock 🔗
@@ -9986,6 +9986,7 @@ dependencies = [
"tempfile",
"thiserror",
"util",
+ "which 6.0.3",
]
[[package]]
Peter Tripp and Conrad Irwin created
Co-authored-by: Conrad Irwin <conrad@zed.dev>
Cargo.lock | 1 +
crates/remote/Cargo.toml | 1 +
crates/remote/src/ssh_session.rs | 14 +++++++++++++-
3 files changed, 15 insertions(+), 1 deletion(-)
@@ -9986,6 +9986,7 @@ dependencies = [
"tempfile",
"thiserror",
"util",
+ "which 6.0.3",
]
[[package]]
@@ -38,6 +38,7 @@ tempfile.workspace = true
thiserror.workspace = true
util.workspace = true
release_channel.workspace = true
+which.workspace = true
[dev-dependencies]
gpui = { workspace = true, features = ["test-support"] }
@@ -1428,9 +1428,21 @@ impl SshRemoteConnection {
}
});
+ anyhow::ensure!(
+ which::which("nc").is_ok(),
+ "Cannot find nc, which is required to connect over ssh."
+ );
+
// Create an askpass script that communicates back to this process.
let askpass_script = format!(
- "{shebang}\n{print_args} | nc -U {askpass_socket} 2> /dev/null \n",
+ "{shebang}\n{print_args} | {nc} -U {askpass_socket} 2> /dev/null \n",
+ // on macOS `brew install netcat` provides the GNU netcat implementation
+ // which does not support -U.
+ nc = if cfg!(target_os = "macos") {
+ "/usr/bin/nc"
+ } else {
+ "nc"
+ },
askpass_socket = askpass_socket.display(),
print_args = "printf '%s\\0' \"$@\"",
shebang = "#!/bin/sh",