diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-13 03:26:03 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-13 03:30:13 +0300 |
| commit | 5cfe5e5e730246948b0c9428ad876b6938590aad (patch) | |
| tree | 53d4bbe1aff6887f63f279eed1b5e4e11e7331b7 /src/cli/pane.rs | |
| parent | 7f3364a468f7dcfd8c9c84e5737fe5699f0e3a93 (diff) | |
feat: add configurable sidebar metadata tokens
Diffstat (limited to 'src/cli/pane.rs')
| -rw-r--r-- | src/cli/pane.rs | 63 |
1 files changed, 30 insertions, 33 deletions
diff --git a/src/cli/pane.rs b/src/cli/pane.rs index a178eb4b..80e10c69 100644 --- a/src/cli/pane.rs +++ b/src/cli/pane.rs @@ -943,7 +943,7 @@ fn pane_run(args: &[String]) -> std::io::Result<i32> { fn pane_report_agent(args: &[String]) -> std::io::Result<i32> { let Some(raw_pane_id) = args.first() else { - eprintln!("usage: herdr pane report-agent <pane_id> --source ID --agent LABEL --state idle|working|blocked|unknown [--message TEXT] [--custom-status TEXT] [--seq N] [--agent-session-id ID] [--agent-session-path PATH]"); + eprintln!("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]"); return Ok(2); }; @@ -952,7 +952,6 @@ fn pane_report_agent(args: &[String]) -> std::io::Result<i32> { let mut agent = None; let mut state = None; let mut message = None; - let mut custom_status = None; let mut seq = None; let mut agent_session_id = None; let mut agent_session_path = None; @@ -992,14 +991,6 @@ fn pane_report_agent(args: &[String]) -> std::io::Result<i32> { message = Some(value.clone()); index += 2; } - "--custom-status" => { - let Some(value) = args.get(index + 1) else { - eprintln!("missing value for --custom-status"); - return Ok(2); - }; - custom_status = Some(value.clone()); - index += 2; - } "--seq" => { let Some(value) = args.get(index + 1) else { eprintln!("missing value for --seq"); @@ -1053,7 +1044,6 @@ fn pane_report_agent(args: &[String]) -> std::io::Result<i32> { agent, state, message, - custom_status, seq, agent_session_id, agent_session_path, @@ -1224,7 +1214,7 @@ fn pane_release_agent(args: &[String]) -> std::io::Result<i32> { fn pane_report_metadata(args: &[String]) -> std::io::Result<i32> { let Some(raw_pane_id) = args.first() else { - eprintln!("usage: herdr pane report-metadata <pane_id> --source ID [--agent LABEL] [--applies-to-source ID] [--title TEXT|--clear-title] [--display-agent TEXT|--clear-display-agent] [--custom-status TEXT|--clear-custom-status] [--state-label STATUS=TEXT] [--clear-state-labels] [--seq N] [--ttl-ms N]"); + eprintln!("usage: herdr pane report-metadata <pane_id> --source ID [--agent LABEL] [--applies-to-source ID] [--title TEXT|--clear-title] [--display-agent TEXT|--clear-display-agent] [--state-label STATUS=TEXT] [--clear-state-labels] [--token NAME=VALUE] [--clear-token NAME] [--seq N] [--ttl-ms N]"); return Ok(2); }; @@ -1234,11 +1224,10 @@ fn pane_report_metadata(args: &[String]) -> std::io::Result<i32> { let mut applies_to_source = None; let mut title = None; let mut display_agent = None; - let mut custom_status = None; let mut state_labels = std::collections::HashMap::new(); + let mut tokens = std::collections::HashMap::new(); let mut clear_title = false; let mut clear_display_agent = false; - let mut clear_custom_status = false; let mut clear_state_labels = false; let mut seq = None; let mut ttl_ms = None; @@ -1294,18 +1283,6 @@ fn pane_report_metadata(args: &[String]) -> std::io::Result<i32> { clear_display_agent = true; index += 1; } - "--custom-status" => { - let Some(value) = args.get(index + 1) else { - eprintln!("missing value for --custom-status"); - return Ok(2); - }; - custom_status = Some(value.clone()); - index += 2; - } - "--clear-custom-status" => { - clear_custom_status = true; - index += 1; - } "--state-label" => { let Some(value) = args.get(index + 1) else { eprintln!("missing value for --state-label"); @@ -1330,6 +1307,29 @@ fn pane_report_metadata(args: &[String]) -> std::io::Result<i32> { clear_state_labels = true; index += 1; } + "--token" => { + let Some(value) = args.get(index + 1) else { + eprintln!("missing value for --token"); + return Ok(2); + }; + let (key, value) = match super::parse_token_assignment(value) { + Ok(token) => token, + Err(message) => { + eprintln!("{message}"); + return Ok(2); + } + }; + tokens.insert(key, value); + index += 2; + } + "--clear-token" => { + let Some(key) = args.get(index + 1) else { + eprintln!("missing value for --clear-token"); + return Ok(2); + }; + tokens.insert(key.clone(), None); + index += 2; + } "--seq" => { let Some(value) = args.get(index + 1) else { eprintln!("missing value for --seq"); @@ -1369,7 +1369,6 @@ fn pane_report_metadata(args: &[String]) -> std::io::Result<i32> { } if title.is_some() && clear_title || display_agent.is_some() && clear_display_agent - || custom_status.is_some() && clear_custom_status || !state_labels.is_empty() && clear_state_labels { eprintln!("cannot set and clear the same metadata field"); @@ -1377,11 +1376,10 @@ fn pane_report_metadata(args: &[String]) -> std::io::Result<i32> { } if title.is_none() && display_agent.is_none() - && custom_status.is_none() && state_labels.is_empty() + && tokens.is_empty() && !clear_title && !clear_display_agent - && !clear_custom_status && !clear_state_labels { eprintln!("missing metadata field to set or clear"); @@ -1395,11 +1393,10 @@ fn pane_report_metadata(args: &[String]) -> std::io::Result<i32> { applies_to_source, title, display_agent, - custom_status, state_labels, + tokens, clear_title, clear_display_agent, - clear_custom_status, clear_state_labels, seq, ttl_ms, @@ -1433,10 +1430,10 @@ fn print_pane_help() { eprintln!(" herdr pane close <pane_id>"); eprintln!(" herdr pane send-text <pane_id> <text>"); eprintln!(" herdr pane send-keys <pane_id> <key> [key ...]"); - eprintln!(" herdr pane report-agent <pane_id> --source ID --agent LABEL --state idle|working|blocked|unknown [--message TEXT] [--custom-status TEXT] [--seq N] [--agent-session-id ID] [--agent-session-path PATH]"); + eprintln!(" 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]"); eprintln!(" herdr pane report-agent-session <pane_id> --source ID --agent LABEL [--seq N] [--agent-session-id ID] [--agent-session-path PATH]"); eprintln!(" herdr pane release-agent <pane_id> --source ID --agent LABEL [--seq N]"); - eprintln!(" herdr pane report-metadata <pane_id> --source ID [--agent LABEL] [--applies-to-source ID] [--title TEXT|--clear-title] [--display-agent TEXT|--clear-display-agent] [--custom-status TEXT|--clear-custom-status] [--state-label STATUS=TEXT] [--clear-state-labels] [--seq N] [--ttl-ms N]"); + eprintln!(" herdr pane report-metadata <pane_id> --source ID [--agent LABEL] [--applies-to-source ID] [--title TEXT|--clear-title] [--display-agent TEXT|--clear-display-agent] [--state-label STATUS=TEXT] [--clear-state-labels] [--token NAME=VALUE] [--clear-token NAME] [--seq N] [--ttl-ms N]"); eprintln!(" herdr pane run <pane_id> <command>"); } |
