-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Milestone
Description
Summary
The column validation logic for --columns and --show-columns flags is duplicated across three commands:
assistant list(cli/src/commands/assistant.rs:219-242)deployment list(cli/src/commands/deployment.rs:224-245)model-config list(cli/src/commands/model_config.rs:172-193)
Proposed Solution
Extract this pattern into a shared helper function in cli/src/output.rs:
pub fn validate_and_show_columns(
columns: &Option<Vec<String>>,
show_columns: bool,
available_columns: &[&str],
command_name: &str,
) -> Result<()> {
if show_columns {
println!("Available columns for {} list:", command_name);
for col in available_columns {
println!(" {}", col);
}
println!("\nUsage: langstar {} list -f text --columns <col1,col2>", command_name);
return Ok(());
}
if let Some(cols) = columns {
for col in cols {
if !available_columns.contains(&col.as_str()) {
return Err(CliError::Config(format!(
"Invalid column '{}'. Available columns: {}",
col,
available_columns.join(", ")
)));
}
}
}
Ok(())
}Related
- Raised in PR ✨ feat(cli): add text output support for assistant, deployment, and model-config list #692 review: ✨ feat(cli): add text output support for assistant, deployment, and model-config list #692 (comment)
- Part of text output rollout (529.2-cli-output-implementation Implement text output format and column selection for AI-friendly CLI #584)
Benefits
- Reduces code duplication
- Improves maintainability
- Makes it easier to add consistent behavior across commands
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels