aboutsummaryrefslogtreecommitdiff
path: root/src/cli
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli')
-rw-r--r--src/cli/pane.rs15
-rw-r--r--src/cli/spec.rs10
2 files changed, 23 insertions, 2 deletions
diff --git a/src/cli/pane.rs b/src/cli/pane.rs
index 3b900e17..33583ee4 100644
--- a/src/cli/pane.rs
+++ b/src/cli/pane.rs
@@ -1156,8 +1156,9 @@ fn parse_pane_wait_output_args(args: &[String]) -> Result<PaneWaitForOutputParam
}
fn pane_report_agent(args: &[String]) -> std::io::Result<i32> {
- const USAGE: &str = "usage: herdr pane report-agent <pane_id> --source ID --agent LABEL --state idle|working|blocked|unknown [--message TEXT] [--seq N] [--agent-session-id ID] [--agent-session-path PATH]";
+ const USAGE: &str = "usage: herdr pane report-agent <pane_id> --source ID --agent LABEL --state idle|working|blocked|unknown [--message TEXT] [--seq N] [--agent-session-id ID] [--agent-session-path PATH] [-- <resume-command...>]";
+ let (args, resume_argv) = split_resume_argv(args);
let args = super::expand_equals_args(
args,
&[
@@ -1282,12 +1283,21 @@ fn pane_report_agent(args: &[String]) -> std::io::Result<i32> {
seq,
agent_session_id,
agent_session_path,
+ resume_argv,
}))
}
+fn split_resume_argv(args: &[String]) -> (&[String], Option<Vec<String>>) {
+ match args.iter().position(|arg| arg == "--") {
+ Some(separator) => (&args[..separator], Some(args[separator + 1..].to_vec())),
+ None => (args, None),
+ }
+}
+
fn pane_report_agent_session(args: &[String]) -> std::io::Result<i32> {
- const USAGE: &str = "usage: herdr pane report-agent-session <pane_id> --source ID --agent LABEL [--seq N] [--agent-session-id ID] [--agent-session-path PATH] [--session-start-source SOURCE]";
+ const USAGE: &str = "usage: herdr pane report-agent-session <pane_id> --source ID --agent LABEL [--seq N] [--agent-session-id ID] [--agent-session-path PATH] [--session-start-source SOURCE] [-- <resume-command...>]";
+ let (args, resume_argv) = split_resume_argv(args);
let args = super::expand_equals_args(
args,
&[
@@ -1398,6 +1408,7 @@ fn pane_report_agent_session(args: &[String]) -> std::io::Result<i32> {
agent_session_id,
agent_session_path,
session_start_source,
+ resume_argv,
},
))
}
diff --git a/src/cli/spec.rs b/src/cli/spec.rs
index 9465dcc3..1cfc2e7f 100644
--- a/src/cli/spec.rs
+++ b/src/cli/spec.rs
@@ -646,6 +646,7 @@ fn report_agent_command() -> Command {
.arg(option("seq", "N"))
.arg(option("agent-session-id", "ID"))
.arg(path_option("agent-session-path", "PATH"))
+ .arg(resume_argv_arg())
}
fn report_agent_session_command() -> Command {
@@ -658,6 +659,15 @@ fn report_agent_session_command() -> Command {
.arg(option("agent-session-id", "ID"))
.arg(path_option("agent-session-path", "PATH"))
.arg(option("session-start-source", "SOURCE"))
+ .arg(resume_argv_arg())
+}
+
+fn resume_argv_arg() -> Arg {
+ Arg::new("resume_argv")
+ .value_name("RESUME_ARG")
+ .num_args(0..)
+ .last(true)
+ .help("Command that resumes this session after a Herdr restart; starts with a plain command name")
}
fn release_agent_command() -> Command {