use std::process::Command;
pub fn set(pane: &str, name: &str, value: &str) -> anyhow::Result<()> {
if cfg!(test) {
return Ok(());
}
let output = Command::new("tmux")
.args(["set", "-t", pane, "-p", name, value])
.output()?;
if !output.status.success() {
anyhow::bail!(
"failed to set tmux pane variable {name} on {pane}: {}",
String::from_utf8_lossy(&output.stderr).trim()
);
}
Ok(())
}
pub fn get(pane: &str) -> Option<String> {
if cfg!(test) {
return None;
}
let output = Command::new("tmux")
.args(["display", "-p", "-t", pane, "#{@ouija_session}"])
.output()
.ok()?;
let val = String::from_utf8_lossy(&output.stdout).trim().to_string();
if val.is_empty() { None } else { Some(val) }
}
pub fn get_last_session_id(pane: &str) -> Option<String> {
if cfg!(test) {
return None;
}
let output = Command::new("tmux")
.args(["display", "-p", "-t", pane, "#{@ouija_last_session}"])
.output()
.ok()?;
let value = String::from_utf8_lossy(&output.stdout).trim().to_string();
if value.is_empty() { None } else { Some(value) }
}
pub fn clear(pane: &str, name: &str) {
if cfg!(test) {
return;
}
let _ = Command::new("tmux")
.args(["set", "-t", pane, "-pu", name])
.status();
}