summaryrefslogtreecommitdiffstats
path: root/src/tmux.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tmux.rs')
-rw-r--r--src/tmux.rs53
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(())
-}