pub struct CliError {
pub kind: CliErrorKind,
pub message: String,
pub argument: Option<String>,
pub value: Option<String>,
pub suggestions: Vec<String>,
pub possible_values: Vec<String>,
pub usage: Option<String>,
pub help_flag: Option<String>,
}Expand description
A command-line error. Render it with CliError::to_diagnostic.
use rich::Console;
use rich_ext::cli_doc::CliError;
let error = CliError::unknown_argument("--colr", ["--color", "--width"]).usage("rich [OPTIONS]");
let out = Console::builder().width(60).build().render_to_string(&error.to_diagnostic());
assert_eq!(
out,
"error: unexpected argument '--colr'\n\
note: usage: rich [OPTIONS]\n\
help: a similar argument exists: '--color'"
);Fields§
§kind: CliErrorKind§message: StringThe headline; generated from the kind and fields when empty.
argument: Option<String>The argument at fault, as typed (--colr) or as named (--width <N>).
value: Option<String>The value at fault, or for a conflict the other argument.
suggestions: Vec<String>Similar spellings, best first.
possible_values: Vec<String>The allowed values, for an invalid value.
usage: Option<String>A usage line shown as a note.
help_flag: Option<String>The help switch to point at (--help), shown as a closing tip.
Implementations§
Source§impl CliError
impl CliError
pub fn new(kind: CliErrorKind, message: impl Into<String>) -> Self
Sourcepub fn unknown_argument<S: AsRef<str>>(
argument: impl Into<String>,
candidates: impl IntoIterator<Item = S>,
) -> Self
pub fn unknown_argument<S: AsRef<str>>( argument: impl Into<String>, candidates: impl IntoIterator<Item = S>, ) -> Self
An unknown option, with suggestions drawn from candidates.
Sourcepub fn unknown_subcommand<S: AsRef<str>>(
name: impl Into<String>,
candidates: impl IntoIterator<Item = S>,
) -> Self
pub fn unknown_subcommand<S: AsRef<str>>( name: impl Into<String>, candidates: impl IntoIterator<Item = S>, ) -> Self
An unknown subcommand, with suggestions drawn from candidates.
Sourcepub fn unknown_in(spec: &CommandSpec, argument: &str) -> Self
pub fn unknown_in(spec: &CommandSpec, argument: &str) -> Self
An unknown option or subcommand in spec: an argument starting with
- is checked against the switches, anything else against the
subcommands. The usage comes from the spec.
Sourcepub fn invalid_value<S: AsRef<str>>(
argument: impl Into<String>,
value: impl Into<String>,
possible: impl IntoIterator<Item = S>,
) -> Self
pub fn invalid_value<S: AsRef<str>>( argument: impl Into<String>, value: impl Into<String>, possible: impl IntoIterator<Item = S>, ) -> Self
A value that is not allowed, suggesting the closest possible ones.
Sourcepub fn missing_value(argument: impl Into<String>) -> Self
pub fn missing_value(argument: impl Into<String>) -> Self
An option given without its value.
Sourcepub fn missing_required<S: AsRef<str>>(
arguments: impl IntoIterator<Item = S>,
) -> Self
pub fn missing_required<S: AsRef<str>>( arguments: impl IntoIterator<Item = S>, ) -> Self
Required arguments that were not given.
pub fn argument(self, argument: impl Into<String>) -> Self
pub fn value(self, value: impl Into<String>) -> Self
pub fn suggestion(self, suggestion: impl Into<String>) -> Self
pub fn suggestions(self, suggestions: impl IntoIterator<Item = String>) -> Self
pub fn usage(self, usage: impl Into<String>) -> Self
Sourcepub fn help_flag(self, flag: impl Into<String>) -> Self
pub fn help_flag(self, flag: impl Into<String>) -> Self
Close with “for more information, try ‘flag’”.
Sourcepub fn exit_code(&self) -> i32
pub fn exit_code(&self) -> i32
The exit status for a usage error, as clap and BSD EX_USAGE-style
tools use: 2.
Sourcepub fn to_diagnostic(&self) -> Diagnostic
pub fn to_diagnostic(&self) -> Diagnostic
The error as an expanded, error-level Diagnostic: the headline,
the usage as a note, the possible values as a note, then a help line
for the suggestions and the help flag. Control characters (from the
command line, say) are escaped, \u{1b}-style.
Source§impl CliError
impl CliError
Sourcepub fn from_clap(err: &Error, cmd: Option<&Command>) -> CliError
pub fn from_clap(err: &Error, cmd: Option<&Command>) -> CliError
A CliError from a clap error. The kind maps to the closest
CliErrorKind; the invalid argument, value, prior argument (for a
conflict), possible values and suggestions come from the error’s
context. With cmd, the usage and a --help tip come from it.
Trait Implementations§
impl Eq for CliError
Source§impl Error for CliError
impl Error for CliError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
impl StructuralPartialEq for CliError
Auto Trait Implementations§
impl Freeze for CliError
impl RefUnwindSafe for CliError
impl Send for CliError
impl Sync for CliError
impl Unpin for CliError
impl UnsafeUnpin for CliError
impl UnwindSafe for CliError
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.