diff options
| author | Golden-Pigeon <goldenpigeon2000@gmail.com> | 2026-05-22 02:39:02 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-22 02:43:30 +0300 |
| commit | 1daf54ecbf960c42d612ed4ad2764045a606fb30 (patch) | |
| tree | c6ee19c7e8032ac77f5c00bc17bc6a1bd93d2272 /src/session.rs | |
| parent | 0148c1379b76c5c0a9d05588c07dcb06ec32f93f (diff) | |
feat: show named session command hints
refs #199
Diffstat (limited to 'src/session.rs')
| -rw-r--r-- | src/session.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/session.rs b/src/session.rs index b164fecc..f00797c0 100644 --- a/src/session.rs +++ b/src/session.rs @@ -92,6 +92,20 @@ pub fn active_name() -> Option<String> { .filter(|name| validate_name(name).is_ok()) } +pub fn local_attach_command() -> String { + match active_name() { + Some(name) => format!("herdr session attach {name}"), + None => "herdr".to_string(), + } +} + +pub fn local_stop_command() -> String { + match active_name() { + Some(name) => format!("herdr session stop {name}"), + None => "herdr server stop".to_string(), + } +} + pub fn explicit_session_requested() -> bool { EXPLICIT_SESSION_REQUESTED.load(Ordering::Relaxed) } @@ -476,6 +490,44 @@ mod tests { } #[test] + fn local_attach_command_uses_default_launch_for_default_session() { + let _guard = env_lock().lock().unwrap(); + std::env::remove_var(SESSION_ENV_VAR); + + assert_eq!(local_attach_command(), "herdr"); + } + + #[test] + fn local_attach_command_uses_session_attach_for_named_session() { + let _guard = env_lock().lock().unwrap(); + std::env::set_var(SESSION_ENV_VAR, "work"); + + assert_eq!(local_attach_command(), "herdr session attach work"); + + std::env::remove_var(SESSION_ENV_VAR); + } + + #[test] + fn local_stop_command_uses_server_stop_for_default_session() { + let _guard = env_lock().lock().unwrap(); + std::env::remove_var(SESSION_ENV_VAR); + + assert_eq!(local_stop_command(), "herdr server stop"); + + std::env::remove_var(SESSION_ENV_VAR); + } + + #[test] + fn local_stop_command_uses_session_stop_for_named_session() { + let _guard = env_lock().lock().unwrap(); + std::env::set_var(SESSION_ENV_VAR, "work"); + + assert_eq!(local_stop_command(), "herdr session stop work"); + + std::env::remove_var(SESSION_ENV_VAR); + } + + #[test] fn explicit_session_socket_ignores_inherited_socket_override() { let _guard = env_lock().lock().unwrap(); let config_home = |
