fixes
This commit is contained in:
@@ -153,9 +153,15 @@ fn daemon_ready(session: &str) -> bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn ensure_daemon(session: &str, headed: bool, executable_path: Option<&str>) -> Result<(), String> {
|
/// Result of ensure_daemon indicating whether a new daemon was started
|
||||||
|
pub struct DaemonResult {
|
||||||
|
/// True if we connected to an existing daemon, false if we started a new one
|
||||||
|
pub already_running: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn ensure_daemon(session: &str, headed: bool, executable_path: Option<&str>) -> Result<DaemonResult, String> {
|
||||||
if is_daemon_running(session) && daemon_ready(session) {
|
if is_daemon_running(session) && daemon_ready(session) {
|
||||||
return Ok(());
|
return Ok(DaemonResult { already_running: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
let exe_path = env::current_exe().map_err(|e| e.to_string())?;
|
let exe_path = env::current_exe().map_err(|e| e.to_string())?;
|
||||||
@@ -242,7 +248,7 @@ pub fn ensure_daemon(session: &str, headed: bool, executable_path: Option<&str>)
|
|||||||
|
|
||||||
for _ in 0..50 {
|
for _ in 0..50 {
|
||||||
if daemon_ready(session) {
|
if daemon_ready(session) {
|
||||||
return Ok(());
|
return Ok(DaemonResult { already_running: false });
|
||||||
}
|
}
|
||||||
thread::sleep(Duration::from_millis(100));
|
thread::sleep(Duration::from_millis(100));
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-6
@@ -149,13 +149,23 @@ fn main() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Err(e) = ensure_daemon(&flags.session, flags.headed, flags.executable_path.as_deref()) {
|
let daemon_result = match ensure_daemon(&flags.session, flags.headed, flags.executable_path.as_deref()) {
|
||||||
if flags.json {
|
Ok(result) => result,
|
||||||
println!(r#"{{"success":false,"error":"{}"}}"#, e);
|
Err(e) => {
|
||||||
} else {
|
if flags.json {
|
||||||
eprintln!("\x1b[31m✗\x1b[0m {}", e);
|
println!(r#"{{"success":false,"error":"{}"}}"#, e);
|
||||||
|
} else {
|
||||||
|
eprintln!("\x1b[31m✗\x1b[0m {}", e);
|
||||||
|
}
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Warn if executable_path was specified but daemon was already running
|
||||||
|
if daemon_result.already_running && flags.executable_path.is_some() {
|
||||||
|
if !flags.json {
|
||||||
|
eprintln!("\x1b[33m⚠\x1b[0m --executable-path ignored: daemon already running. Use 'agent-browser close' first to restart with new path.");
|
||||||
}
|
}
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If --headed flag is set, send launch command first to switch to headed mode
|
// If --headed flag is set, send launch command first to switch to headed mode
|
||||||
|
|||||||
Reference in New Issue
Block a user