Skip to main content

csd/commands/
kill.rs

1//! `csd kill` — stop a session and remove its sidecar. Idempotent: a session that is already gone
2//! still gets its sidecar cleaned up.
3
4use serde::Serialize;
5
6use crate::error::{Error, Result};
7use crate::session::Session;
8use crate::tmux;
9
10#[derive(Debug, Serialize)]
11pub struct KillResult {
12    pub ok: bool,
13}
14
15pub fn run(session_name: &str) -> Result<KillResult> {
16    match tmux::kill_session(session_name) {
17        Ok(()) | Err(Error::NoSuchSession(_)) => {}
18        Err(e) => return Err(e),
19    }
20    Session::delete(session_name)?;
21    Ok(KillResult { ok: true })
22}