use std::path::PathBuf;
use anyhow::Result;
use clap::Parser;
use crate::daemon::client::DaemonClient;
use crate::daemon::server;
#[derive(Parser)]
pub struct StopCommand {
#[arg(long, value_name = "PATH")]
pub socket: Option<PathBuf>,
}
impl StopCommand {
pub async fn execute(self) -> Result<()> {
let socket_path = server::resolve_socket(self.socket)?;
let stopped = DaemonClient::new(&socket_path).shutdown().await.is_ok();
#[cfg(target_os = "macos")]
{
let _ = crate::daemon::launchd::unload();
}
#[cfg(target_os = "linux")]
{
let _ = crate::daemon::systemd::unload();
}
if stopped {
println!("daemon stopping");
} else {
println!("daemon not running");
}
Ok(())
}
}