diff options
author | Toby Vincent <tobyv@tobyvin.dev> | 2024-02-06 19:06:18 -0600 |
---|---|---|
committer | Toby Vincent <tobyv@tobyvin.dev> | 2024-02-06 19:06:18 -0600 |
commit | c5773cdb0de9c97596ac451fb2fb9c2743a75a11 (patch) | |
tree | e537a43c852b45227611f58e9e2bf448c8efa99a /src/tmux.rs | |
parent | 758563b5c62be585d94d4437c1e09d05ba9d4894 (diff) |
fix: simplify tmux parsing
Diffstat (limited to 'src/tmux.rs')
-rw-r--r-- | src/tmux.rs | 18 |
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(()) |