1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use crate::Session;
use crate::TmuxInterface;
use crate::TmuxInterfaceError;
use crate::session::{SESSION_VARS_REGEX_VEC, SESSION_VARS_SEPARATOR};
pub struct Sessions {
}
impl Sessions {
pub fn get() -> Result<Vec<Session>, TmuxInterfaceError> {
let tmux = TmuxInterface::new();
let ls_format = SESSION_VARS_REGEX_VEC.iter().map(|t| format!("#{{{}}}", t.0))
.collect::<Vec<String>>().join(SESSION_VARS_SEPARATOR);
let sessions_str = tmux.list_sessions(Some(&ls_format))?;
Sessions::parse(&sessions_str)
}
pub fn parse(sessions_str: &str) -> Result<Vec<Session>, TmuxInterfaceError> {
let mut sessions: Vec<Session> = Vec::new();
for line in sessions_str.lines() {
sessions.push(Session::parse(line)?);
}
Ok(sessions)
}
}