From 5c3fb7df3f3d22c03ea982c6f0904e631e06dcfd Mon Sep 17 00:00:00 2001 From: Valerie Date: Thu, 7 Mar 2024 17:10:45 -0500 Subject: [PATCH] created switch command --- src/command/mod.rs | 2 +- src/command/session.rs | 31 +++++++++++++++++++++++++++++++ src/main.rs | 3 +++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/command/session.rs diff --git a/src/command/mod.rs b/src/command/mod.rs index 8b5d2e6..54859f3 100644 --- a/src/command/mod.rs +++ b/src/command/mod.rs @@ -1,4 +1,4 @@ pub mod share; -//pub mod session; +pub mod session; diff --git a/src/command/session.rs b/src/command/session.rs new file mode 100644 index 0000000..4f6028b --- /dev/null +++ b/src/command/session.rs @@ -0,0 +1,31 @@ +//! commands accessible from within a session + +use pico_args::Arguments; +use tmux_interface::{ + Tmux, + commands +}; + +use crate::{ error, flag, util }; + +pub fn switch(pargs: &mut Arguments) { + // consume optional flags + let read_only = pargs.contains(flag::READ_ONLY); + let detach_other = pargs.contains(flag::DETACHED); + + let args = pargs.clone().finish(); + if args.len() < 1 { error::missing_target(); } + let target = args.get(0).unwrap().to_string_lossy().to_string(); + println!("{target}"); + + let exists = util::session_exists(target.clone()); + if !exists { error::no_target(target.clone()); } + + let mut switch = commands::SwitchClient::new(); + switch = switch.target_session(target); + + Tmux::new() + .add_command(switch) + .output().ok(); +} + diff --git a/src/main.rs b/src/main.rs index 4276941..f610b1e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -64,6 +64,9 @@ fn main() { Some("n" | "new") => command::share::new(&mut args), + Some("s" | "switch") + => command::session::switch(&mut args), + _ => error::no_subcommand(subcommand.unwrap()) }