(err: &clap::Error)
| 534 | } |
| 535 | |
| 536 | fn reason(err: &clap::Error) -> Option<String> { |
| 537 | if let Some(source) = err.source() { |
| 538 | return Some(source.to_string()); |
| 539 | } |
| 540 | |
| 541 | match err.kind() { |
| 542 | ErrorKind::InvalidValue |
| 543 | if ctx_str(err, ContextKind::InvalidValue).as_deref() == Some("") => |
| 544 | { |
| 545 | Some("a value is required".to_string()) |
| 546 | } |
| 547 | ErrorKind::NoEquals => Some("an equal sign is required".to_string()), |
| 548 | ErrorKind::InvalidUtf8 => Some("argument is not valid UTF-8".to_string()), |
| 549 | ErrorKind::TooFewValues => { |
| 550 | let minimum = ctx_number(err, ContextKind::MinValues)?; |
| 551 | let actual = ctx_number(err, ContextKind::ActualNumValues)?; |
| 552 | Some(format!("expected at least {minimum} values, got {actual}")) |
| 553 | } |
| 554 | ErrorKind::WrongNumberOfValues => { |
| 555 | let expected = ctx_number(err, ContextKind::ExpectedNumValues)?; |
| 556 | let actual = ctx_number(err, ContextKind::ActualNumValues)?; |
| 557 | Some(format!("expected {expected} values, got {actual}")) |
| 558 | } |
| 559 | _ => None, |
| 560 | } |
| 561 | } |
| 562 | |
| 563 | /// Visible subcommand names of a node, in declaration order. |
| 564 | /// |
no test coverage detected