feat: show children
This commit is contained in:
parent
a8be9b71b2
commit
1c2cc8f1fe
1 changed files with 33 additions and 12 deletions
|
|
@ -19,6 +19,38 @@ impl HelpCommand {
|
|||
}
|
||||
}
|
||||
|
||||
fn format_argument_spec(arg: &ArgumentSpec) -> String {
|
||||
let argument_brackets = if arg.required {
|
||||
("(", "*)")
|
||||
} else {
|
||||
("(", ")")
|
||||
};
|
||||
|
||||
let mut s = String::new();
|
||||
|
||||
if let ArgumentType::Enum(possibilities) = &arg.arg_type {
|
||||
s.push_str(argument_brackets.0);
|
||||
s.push_str(&possibilities.to_vec().join("|"));
|
||||
} else {
|
||||
s.push_str(argument_brackets.0);
|
||||
s.push_str(arg.name);
|
||||
}
|
||||
|
||||
if !arg.children.is_empty() {
|
||||
let children_str = arg
|
||||
.children
|
||||
.iter()
|
||||
.map(format_argument_spec)
|
||||
.collect::<Vec<_>>()
|
||||
.join(" ");
|
||||
s.push(' ');
|
||||
s.push_str(&children_str);
|
||||
}
|
||||
|
||||
s.push_str(argument_brackets.1);
|
||||
s
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl Command for HelpCommand {
|
||||
fn name(&self) -> &'static str {
|
||||
|
|
@ -58,18 +90,7 @@ impl Command for HelpCommand {
|
|||
let mut arg_string: Vec<String> = Vec::new();
|
||||
|
||||
for arg in cmd.argument_spec() {
|
||||
let argument_brackets = {
|
||||
if arg.required {
|
||||
("(", "*)")
|
||||
} else {
|
||||
("(", ")")
|
||||
}
|
||||
};
|
||||
|
||||
arg_string.push(format!(
|
||||
"{}{}{}",
|
||||
argument_brackets.0, arg.name, argument_brackets.1
|
||||
));
|
||||
arg_string.push(format_argument_spec(arg));
|
||||
}
|
||||
|
||||
format!(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue