aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-04-12 15:39:36 +0200
committerGitHub <noreply@github.com>2024-04-12 15:39:36 +0200
commite68bc649d63d51178d224be3af7109ca324480f4 (patch)
treea3993ee2833b7b5ac952a35617c7037132571b71 /src
parentdocs(readme): update roadmap and remove extraneous section (#3252) (diff)
downloadsl0ppij-e68bc649d63d51178d224be3af7109ca324480f4.tar.gz
sl0ppij-e68bc649d63d51178d224be3af7109ca324480f4.tar.xz
sl0ppij-e68bc649d63d51178d224be3af7109ca324480f4.zip
feat(cli): allow starting a session detached (#3257)
* feat(cli): allow starting a session detached * fix tests
Diffstat (limited to 'src')
-rw-r--r--src/commands.rs26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/commands.rs b/src/commands.rs
index d37a422a..e0dbbdc2 100644
--- a/src/commands.rs
+++ b/src/commands.rs
@@ -407,6 +407,7 @@ pub(crate) fn start_client(opts: CliArgs) {
let mut config_options = config_options.clone();
let mut opts = opts.clone();
let mut is_a_reconnect = false;
+ let mut should_create_detached = false;
if let Some(reconnect_to_session) = &reconnect_to_session {
// this is integration code to make session reconnects work with this existing,
@@ -417,6 +418,7 @@ pub(crate) fn start_client(opts: CliArgs) {
opts.command = Some(Command::Sessions(Sessions::Attach {
session_name: reconnect_to_session.name.clone(),
create: true,
+ background: false,
force_run_commands: false,
index: None,
options: None,
@@ -476,6 +478,7 @@ pub(crate) fn start_client(opts: CliArgs) {
if let Some(Command::Sessions(Sessions::Attach {
session_name,
create,
+ background,
force_run_commands,
index,
options,
@@ -487,9 +490,14 @@ pub(crate) fn start_client(opts: CliArgs) {
},
None => config_options,
};
+ should_create_detached = background;
let client = if let Some(idx) = index {
- attach_with_session_index(config_options.clone(), idx, create)
+ attach_with_session_index(
+ config_options.clone(),
+ idx,
+ create || should_create_detached,
+ )
} else {
let session_exists = session_name
.as_ref()
@@ -497,7 +505,10 @@ pub(crate) fn start_client(opts: CliArgs) {
.unwrap_or(false);
let resurrection_layout =
session_name.as_ref().and_then(|s| resurrection_layout(&s));
- if create && !session_exists && resurrection_layout.is_none() {
+ if (create || should_create_detached)
+ && !session_exists
+ && resurrection_layout.is_none()
+ {
session_name.clone().map(start_client_plan);
}
match (session_name.as_ref(), resurrection_layout) {
@@ -507,7 +518,11 @@ pub(crate) fn start_client(opts: CliArgs) {
}
ClientInfo::Resurrect(session_name.clone(), resurrection_layout)
},
- _ => attach_with_session_name(session_name, config_options.clone(), create),
+ _ => attach_with_session_name(
+ session_name,
+ config_options.clone(),
+ create || should_create_detached,
+ ),
}
};
@@ -541,6 +556,7 @@ pub(crate) fn start_client(opts: CliArgs) {
tab_position_to_focus,
pane_id_to_focus,
is_a_reconnect,
+ should_create_detached,
);
} else {
if let Some(session_name) = opts.session.clone() {
@@ -555,6 +571,7 @@ pub(crate) fn start_client(opts: CliArgs) {
None,
None,
is_a_reconnect,
+ should_create_detached,
);
} else {
if let Some(session_name) = config_options.session_name.as_ref() {
@@ -595,6 +612,7 @@ pub(crate) fn start_client(opts: CliArgs) {
None,
None,
is_a_reconnect,
+ should_create_detached,
);
},
_ => {
@@ -609,6 +627,7 @@ pub(crate) fn start_client(opts: CliArgs) {
None,
None,
is_a_reconnect,
+ should_create_detached,
);
},
}
@@ -632,6 +651,7 @@ pub(crate) fn start_client(opts: CliArgs) {
None,
None,
is_a_reconnect,
+ should_create_detached,
);
}
}