diff options
Diffstat (limited to 'src/tmux.rs')
-rw-r--r-- | src/tmux.rs | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/src/tmux.rs b/src/tmux.rs deleted file mode 100644 index e318c07..0000000 --- a/src/tmux.rs +++ /dev/null @@ -1,53 +0,0 @@ -use std::{cmp::Reverse, collections::BTreeMap, ffi::OsStr, process::Command}; - -use tokio::sync::mpsc::Sender; - -use crate::Host; - -pub async fn sessions<S>(tx: Sender<Host>, socket: &S) -> Result<(), anyhow::Error> -where - S: AsRef<OsStr>, -{ - let stdout = Command::new("tmux") - .arg("-L") - .arg(socket) - .arg("list-sessions") - .arg("-F") - .arg("#{?session_last_attached,#{session_last_attached},#{session_created}}:#{s/_/./:session_name}") - .output()? - .stdout; - - let mut btree_map: BTreeMap<Reverse<usize>, String> = std::str::from_utf8(&stdout)? - .lines() - .flat_map(|s| { - let (t, s) = s.split_once(':')?; - Some((Reverse(t.parse().ok()?), s.to_string())) - }) - .collect(); - - let stdout = Command::new("tmux") - .arg("-L") - .arg("default") - .arg("list-sessions") - .arg("-F") - .arg("#{?session_last_attached,#{session_last_attached},#{session_created}}:#{host}") - .output()? - .stdout; - - if let Some((t, s)) = std::str::from_utf8(&stdout)? - .lines() - .flat_map(|s| { - let (t, s) = s.split_once(':')?; - Some((t.parse().ok()?, s.to_string())) - }) - .max_by_key(|t| t.0) - { - btree_map.insert(Reverse(t), s); - } - - for name in btree_map.into_values() { - tx.send(name.parse()?).await?; - } - - Ok(()) -} |