lets just keep trying to get ai to fix this command

This commit is contained in:
Soph :3 2025-09-09 12:05:49 +03:00
parent 44d0fd22e1
commit b64b0c1cf0

View file

@ -96,6 +96,15 @@ impl Command for DeployCommand {
}
client.message("Running `cargo run --release`...").await;
let client_clone = client.clone();
let client_clone2 = client.clone();
let found_connected = Arc::new(Mutex::new(false));
let found_connected_cargo = found_connected.clone();
// Spawn cargo run --release in a separate blocking task
let running_arc = self.running.clone();
let cargo_task = task::spawn_blocking(move || {
let mut cargo_child = match SysCommand::new("cargo")
.arg("run")
.arg("--release")
@ -105,29 +114,32 @@ impl Command for DeployCommand {
{
Ok(child) => child,
Err(e) => {
client
.message(format!("Failed to start cargo run: {}", e))
.await;
let _ = client_clone.message(format!("Failed to start cargo run: {}", e));
return;
}
};
// Save the child handle for later killing
{
let mut running = running_arc.blocking_lock();
*running = Some(cargo_child.try_clone().unwrap());
}
let cargo_stdout = cargo_child.stdout.take().unwrap();
let cargo_stderr = cargo_child.stderr.take().unwrap();
let client_clone = client.clone();
let found_connected = Arc::new(Mutex::new(false));
let found_connected_cargo = found_connected.clone();
task::spawn_blocking(async move || {
// stdout handler
let client_clone_stdout = client_clone.clone();
let found_connected_cargo_stdout = found_connected_cargo.clone();
let stdout_handle = std::thread::spawn(move || {
let reader = BufReader::new(cargo_stdout);
for line in reader.lines() {
match line {
Ok(l) => {
let msg = format!("cargo: {}", l);
let _ = client_clone.message(msg.clone()).await;
let _ = client_clone_stdout.message(msg);
if l.contains("[CONNECTED]") {
let mut found = found_connected_cargo.blocking_lock();
let mut found = found_connected_cargo_stdout.blocking_lock();
*found = true;
break;
}
@ -137,20 +149,28 @@ impl Command for DeployCommand {
}
});
let client_clone2 = client.clone();
task::spawn_blocking(async move || {
// stderr handler
let client_clone_stderr = client_clone2.clone();
let stderr_handle = std::thread::spawn(move || {
let reader = BufReader::new(cargo_stderr);
for line in reader.lines() {
match line {
Ok(l) => {
let msg = format!("cargo stderr: {}", l);
let _ = client_clone2.message(msg.clone()).await;
let _ = client_clone_stderr.message(msg);
}
Err(_) => break,
}
}
});
let _ = stdout_handle.join();
let _ = stderr_handle.join();
let _ = cargo_child.wait();
});
// Wait for [CONNECTED] from cargo run --release
loop {
{
let found = found_connected.lock().await;
@ -260,6 +280,7 @@ impl Command for DeployCommand {
}
}
// Step 5: Wait for [CONNECTED] from systemctl copper
client
.message("Waiting for [CONNECTED] from systemctl copper...")
.await;