diff options
| author | Franz Bettag <franz@bett.ag> | 2026-04-28 19:11:11 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-28 20:11:11 +0300 |
| commit | 5baf231e076ed96bb2aaba245eb53ad0e4501d76 (patch) | |
| tree | a89d28ad26b26f8b8e519106dc304d4e54d3b39e /src/main.rs | |
| parent | 22d7bef5680a1d55c28ff6246518d96487e95d5e (diff) | |
Add named persistent sessions (#57)
* feat: add named persistent sessions
* feat: add session management commands
* fix: tighten named session stop and override precedence
* fix: handle session help and stop test race
* test: isolate default session env test
---------
Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index dbc77060..cf5842c4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,6 +38,7 @@ mod raw_input; mod release_notes; mod selection; mod server; +mod session; mod sound; mod terminal_notify; mod terminal_theme; @@ -160,7 +161,15 @@ fn random_nested_message() -> &'static str { } fn main() -> io::Result<()> { - let args: Vec<String> = std::env::args().collect(); + let raw_args: Vec<String> = std::env::args().collect(); + let args = match session::configure_from_args(&raw_args) { + Ok(args) => args, + Err(err) => { + eprintln!("error: {err}"); + eprintln!("run 'herdr --help' for usage"); + std::process::exit(2); + } + }; if let cli::CommandOutcome::Handled(code) = cli::maybe_run(&args)? { std::process::exit(code); @@ -189,7 +198,17 @@ fn main() -> io::Result<()> { if args.iter().any(|a| a == "--help" || a == "-h") { println!("herdr — terminal workspace manager for AI coding agents"); println!(); - println!("Usage: herdr [options] [command]"); + println!("Usage: herdr [options]"); + println!(" herdr --session <name> [options]"); + println!(" herdr update"); + println!(" herdr server stop"); + println!(" herdr server reload-config"); + println!(" herdr workspace <subcommand> ..."); + println!(" herdr tab <subcommand> ..."); + println!(" herdr pane <subcommand> ..."); + println!(" herdr wait <subcommand> ..."); + println!(" herdr session <subcommand> ..."); + println!(" herdr integration <subcommand> ..."); println!(); println!("Common commands:"); println!( @@ -230,6 +249,10 @@ fn main() -> io::Result<()> { ); println!( " {:<32} {}", + "herdr session <subcommand>", "Manage named persistent sessions" + ); + println!( + " {:<32} {}", "herdr integration <subcommand>", "Manage built-in agent integrations" ); println!(); @@ -242,6 +265,7 @@ fn main() -> io::Result<()> { println!(); println!("Options:"); println!(" --no-session Run monolithically (no server/client, escape hatch)"); + println!(" --session <name> Use or create a named persistent session"); println!(" --default-config Print default configuration and exit"); println!(" --version, -V Print version and exit"); println!(" --help, -h Show this help"); @@ -266,6 +290,7 @@ fn main() -> io::Result<()> { // Reject unknown flags let known_flags = [ "--no-session", + "--session", "--version", "-V", "--default-config", @@ -287,6 +312,7 @@ fn main() -> io::Result<()> { "workspace", "pane", "wait", + "session", "integration", ] .contains(&arg.as_str()) |
