summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-02-06 19:06:18 -0600
committerToby Vincent <tobyv@tobyvin.dev>2024-02-06 19:06:18 -0600
commitc5773cdb0de9c97596ac451fb2fb9c2743a75a11 (patch)
treee537a43c852b45227611f58e9e2bf448c8efa99a
parent758563b5c62be585d94d4437c1e09d05ba9d4894 (diff)
fix: simplify tmux parsing
-rw-r--r--src/tmux.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/tmux.rs b/src/tmux.rs
index 7f3e416..127c15e 100644
--- a/src/tmux.rs
+++ b/src/tmux.rs
@@ -1,4 +1,4 @@
-use std::{collections::BTreeMap, ffi::OsStr, process::Command, str::FromStr};
+use std::{collections::BTreeMap, ffi::OsStr, process::Command};
use tokio::sync::mpsc::Sender;
@@ -13,14 +13,16 @@ where
.arg(socket)
.arg("list-sessions")
.arg("-F")
- .arg("#{?session_last_attached,#{session_last_attached},#{session_created}}:#S")
+ .arg("#{?session_last_attached,#{session_last_attached},#{session_created}}:#{s/_/./:session_name}")
.output()?
.stdout;
let mut btree_map = std::str::from_utf8(&stdout)?
.lines()
- .flat_map(|s| s.split_once(':'))
- .flat_map(|(t, s)| Some((FromStr::from_str(t).ok()?, s.to_string())))
+ .flat_map(|s| {
+ let (t, s) = s.split_once(':')?;
+ Some((t.parse().ok()?, s.to_string()))
+ })
.collect::<BTreeMap<usize, String>>();
let stdout = Command::new("tmux")
@@ -34,15 +36,17 @@ where
if let Some((t, s)) = std::str::from_utf8(&stdout)?
.lines()
- .flat_map(|s| s.split_once(':'))
- .flat_map(|(t, s)| Some((FromStr::from_str(t).ok()?, s.to_string())))
+ .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(t, s);
}
for name in btree_map.into_values() {
- tx.send(name.replace('_', ".").parse()?).await?;
+ tx.send(name.parse()?).await?;
}
Ok(())