diff options
Diffstat (limited to 'src/cli/tab.rs')
| -rw-r--r-- | src/cli/tab.rs | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/cli/tab.rs b/src/cli/tab.rs index 3fcc0647..955a1ba1 100644 --- a/src/cli/tab.rs +++ b/src/cli/tab.rs @@ -1,3 +1,5 @@ +use std::collections::HashMap; + use crate::api::schema::{ Method, Request, TabCreateParams, TabListParams, TabRenameParams, TabTarget, }; @@ -58,6 +60,7 @@ fn tab_create(args: &[String]) -> std::io::Result<i32> { let mut cwd = None; let mut focus = false; let mut label = None; + let mut env = HashMap::new(); let mut index = 0; while index < args.len() { @@ -94,6 +97,21 @@ fn tab_create(args: &[String]) -> std::io::Result<i32> { focus = false; index += 1; } + "--env" => { + let Some(value) = args.get(index + 1) else { + eprintln!("missing value for --env"); + return Ok(2); + }; + let (key, value) = match super::parse_env_assignment(value) { + Ok(pair) => pair, + Err(err) => { + eprintln!("{err}"); + return Ok(2); + } + }; + env.insert(key, value); + index += 2; + } other => { eprintln!("unknown option: {other}"); return Ok(2); @@ -108,6 +126,7 @@ fn tab_create(args: &[String]) -> std::io::Result<i32> { cwd, focus, label, + env, }), })?) } @@ -185,7 +204,7 @@ fn print_tab_help() { eprintln!("herdr tab commands:"); eprintln!(" herdr tab list [--workspace <workspace_id>]"); eprintln!( - " herdr tab create [--workspace <workspace_id>] [--cwd PATH] [--label TEXT] [--focus] [--no-focus]" + " herdr tab create [--workspace <workspace_id>] [--cwd PATH] [--label TEXT] [--env KEY=VALUE] [--focus] [--no-focus]" ); eprintln!(" herdr tab get <tab_id>"); eprintln!(" herdr tab focus <tab_id>"); |
