tmux_interface/variables/session/sessions.rs
1use crate::{Error, Session};
2use std::ops::Index;
3use std::str::FromStr;
4
5#[derive(Default, Clone, PartialEq, Debug)]
6pub struct Sessions(pub Vec<Session>);
7
8impl IntoIterator for Sessions {
9 type Item = Session;
10 type IntoIter = ::std::vec::IntoIter<Self::Item>;
11
12 fn into_iter(self) -> Self::IntoIter {
13 self.0.into_iter()
14 }
15}
16
17impl Index<usize> for Sessions {
18 type Output = Session;
19
20 fn index(&self, i: usize) -> &Self::Output {
21 &self.0[i]
22 }
23}
24
25impl FromStr for Sessions {
26 type Err = Error;
27
28 fn from_str(s: &str) -> Result<Self, Error> {
29 let mut sessions = Sessions::new();
30 for line in s.lines() {
31 sessions.push(Session::from_str(line)?);
32 }
33 Ok(sessions)
34 }
35}
36
37impl Sessions {
38 pub fn new() -> Self {
39 Self(Vec::new())
40 }
41
42 pub fn push(&mut self, session: Session) {
43 self.0.push(session);
44 }
45
46 //let sessions_str = String::from_utf8_lossy(&output.0.stdout.as_slice());
47 //Sessions::from_str(&sessions_str, bitflags)
48 //}
49}
50
51//#[cfg(feature = "tmux_2_1")]
52//format.session_activity(&mut session.activity);
53//#[cfg(all(feature = "tmux_2_1", not(feature = "tmux_2_2")))]
54//format.session_activity_string(&mut session.activity_string);
55//#[cfg(feature = "tmux_2_1")]
56//format.session_alerts(&mut session.alerts);
57//#[cfg(feature = "tmux_1_6")]
58//format.session_attached(&mut session.attached);
59//#[cfg(feature = "tmux_3_1")]
60//format.session_attached_list(&mut session.attached_list);
61//#[cfg(feature = "tmux_1_6")]
62//format.session_created(&mut session.created);
63//#[cfg(all(feature = "tmux_1_6", not(feature = "tmux_2_2")))]
64//format.session_created_string(&mut session.created_string);
65//#[cfg(feature = "tmux_2_6")]
66//format.session_format(&mut session.format);
67//#[cfg(feature = "tmux_1_6")]
68//format.session_group(&mut session.group);
69//#[cfg(feature = "tmux_3_1")]
70//format.session_group_attached(&mut session.group_attached);
71//#[cfg(feature = "tmux_3_1")]
72//format.session_group_attached_list(&mut session.group_attached_list);
73//#[cfg(feature = "tmux_2_7")]
74//format.session_group_list(&mut session.group_list);
75//#[cfg(feature = "tmux_3_1")]
76//format.session_group_many_attached(&mut session.group_many_attached);
77//#[cfg(feature = "tmux_2_7")]
78//format.session_group_size(&mut session.group_size);
79//#[cfg(feature = "tmux_1_6")]
80//format.session_grouped(&mut session.grouped);
81//#[cfg(all(feature = "tmux_1_6", not(feature = "tmux_2_9")))]
82//format.session_height(&mut session.height);
83//#[cfg(all(feature = "tmux_1_6", not(feature = "tmux_2_9")))]
84//format.session_width(&mut session.width);
85//#[cfg(feature = "tmux_1_8")]
86//format.session_id(&mut session.id);
87//#[cfg(feature = "tmux_2_1")]
88//format.session_last_attached(&mut session.last_attached);
89//#[cfg(all(feature = "tmux_2_1", not(feature = "tmux_2_2")))]
90//format.session_last_attached_string(&mut session.last_attached_string);
91//#[cfg(feature = "tmux_2_0")]
92//format.session_many_attached(&mut session.many_attached);
93//#[cfg(feature = "tmux_1_6")]
94//format.session_name(&mut session.name);
95//#[cfg(feature = "tmux_2_5")]
96//format.session_stack(&mut session.stack);
97//#[cfg(feature = "tmux_1_6")]
98//format.session_windows(&mut session.windows);