windows: Fix supermaven (#16203)

Closes #16194

This PR introduces the following changes:

1. Updated the download process to retrieve the `.exe` file, as the API
response indicates that the `.exe` file should be downloaded on Windows.
> API response:
"https://supermaven-public.s3.amazonaws.com/sm-agent/26/windows/amd64/sm-agent.exe"
2. Modified the startup behavior of supermaven to prevent the cmd window
from appearing.

Release Notes:

- N/A
This commit is contained in:
张小白 2024-08-14 22:01:16 +08:00 committed by GitHub
parent 0eb96c72e3
commit 88a12b60a9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 20 additions and 5 deletions

1
Cargo.lock generated
View file

@ -10509,6 +10509,7 @@ dependencies = [
"theme", "theme",
"ui", "ui",
"util", "util",
"windows 0.58.0",
] ]
[[package]] [[package]]

View file

@ -31,6 +31,9 @@ text.workspace = true
ui.workspace = true ui.workspace = true
util.workspace = true util.workspace = true
[target.'cfg(target_os = "windows")'.dependencies]
windows.workspace = true
[dev-dependencies] [dev-dependencies]
editor = { workspace = true, features = ["test-support"] } editor = { workspace = true, features = ["test-support"] }
env_logger.workspace = true env_logger.workspace = true

View file

@ -260,14 +260,21 @@ impl SupermavenAgent {
client: Arc<Client>, client: Arc<Client>,
cx: &mut ModelContext<Supermaven>, cx: &mut ModelContext<Supermaven>,
) -> Result<Self> { ) -> Result<Self> {
let mut process = Command::new(&binary_path) let mut process = Command::new(&binary_path);
process
.arg("stdio") .arg("stdio")
.stdin(Stdio::piped()) .stdin(Stdio::piped())
.stdout(Stdio::piped()) .stdout(Stdio::piped())
.stderr(Stdio::piped()) .stderr(Stdio::piped())
.kill_on_drop(true) .kill_on_drop(true);
.spawn()
.context("failed to start the binary")?; #[cfg(target_os = "windows")]
{
use smol::process::windows::CommandExt;
process.creation_flags(windows::Win32::System::Threading::CREATE_NO_WINDOW.0);
}
let mut process = process.spawn().context("failed to start the binary")?;
let stdin = process let stdin = process
.stdin .stdin

View file

@ -212,7 +212,11 @@ pub async fn latest_release(
} }
pub fn version_path(version: u64) -> PathBuf { pub fn version_path(version: u64) -> PathBuf {
supermaven_dir().join(format!("sm-agent-{}", version)) supermaven_dir().join(format!(
"sm-agent-{}{}",
version,
std::env::consts::EXE_SUFFIX
))
} }
pub async fn has_version(version_path: &Path) -> bool { pub async fn has_version(version_path: &Path) -> bool {