pub struct CommandError {
pub message: String,
pub code: String,
pub fix: String,
pub next_actions: Vec<NextAction>,
}Expand description
Error payload returned from a command handler.
Fields§
§message: String§code: String§fix: String§next_actions: Vec<NextAction>Implementations§
Source§impl CommandError
impl CommandError
Sourcepub fn new(
message: impl Into<String>,
code: impl Into<String>,
fix: impl Into<String>,
) -> Self
pub fn new( message: impl Into<String>, code: impl Into<String>, fix: impl Into<String>, ) -> Self
Examples found in repository?
examples/ops.rs (lines 52-56)
7fn main() {
8 let cli = AgentCli::new("ops", "Agent-native operations CLI")
9 .version(env!("CARGO_PKG_VERSION"))
10 .root_field("health", json!({ "server": "ok", "worker": "ok" }))
11 .command(
12 Command::new("status", "Show system health")
13 .usage("ops status")
14 .handler(|_req, _ctx| {
15 Ok(CommandOutput::new(json!({
16 "healthy": true,
17 "queue_depth": 0
18 }))
19 .next_action(NextAction::new("ops status", "Re-check status"))
20 .next_action(
21 NextAction::new("ops logs <source> [--lines=<lines>]", "Inspect logs")
22 .with_param(
23 "source",
24 ActionParam::new()
25 .enum_values(["worker", "errors", "server"])
26 .default("worker"),
27 )
28 .with_param(
29 "lines",
30 ActionParam::new()
31 .description("Number of lines to show")
32 .default(20),
33 ),
34 ))
35 }),
36 )
37 .command(
38 Command::new("logs", "View logs with context-safe truncation")
39 .usage("ops logs <source> [--lines=<lines>] [--follow]")
40 .handler(|req, _ctx| {
41 let source = req.arg(0).unwrap_or("worker");
42 let lines = req
43 .flag("lines")
44 .and_then(|value| value.parse::<usize>().ok())
45 .unwrap_or(20);
46
47 let fake_logs = (0..120)
48 .map(|idx| format!("[{source}] line-{idx}"))
49 .collect::<Vec<_>>();
50 let payload =
51 truncate_lines_with_file(fake_logs, lines, "ops-logs").map_err(|_| {
52 CommandError::new(
53 "failed to write full log output",
54 "LOG_WRITE_FAILED",
55 "Check disk permissions and retry.",
56 )
57 })?;
58
59 Ok(
60 CommandOutput::new(json!(payload)).next_action(NextAction::new(
61 "ops logs <source> [--lines=<lines>] [--follow]",
62 "Adjust line count or follow logs",
63 )),
64 )
65 }),
66 );
67
68 let run = cli.run_env();
69 println!("{}", run.to_json());
70 std::process::exit(run.exit_code());
71}pub fn next_action(self, action: NextAction) -> Self
pub fn next_actions(self, actions: Vec<NextAction>) -> Self
Trait Implementations§
Source§impl Clone for CommandError
impl Clone for CommandError
Source§fn clone(&self) -> CommandError
fn clone(&self) -> CommandError
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CommandError
impl Debug for CommandError
Source§impl Display for CommandError
impl Display for CommandError
Source§impl Error for CommandError
impl Error for CommandError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Source§impl PartialEq for CommandError
impl PartialEq for CommandError
impl StructuralPartialEq for CommandError
Auto Trait Implementations§
impl Freeze for CommandError
impl RefUnwindSafe for CommandError
impl Send for CommandError
impl Sync for CommandError
impl Unpin for CommandError
impl UnsafeUnpin for CommandError
impl UnwindSafe for CommandError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more