aboutsummaryrefslogtreecommitdiff
path: root/src/cli/tab.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli/tab.rs')
-rw-r--r--src/cli/tab.rs21
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>");