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]
|
#[async_trait]
|
||||||
impl Command for HelpCommand {
|
impl Command for HelpCommand {
|
||||||
fn name(&self) -> &'static str {
|
fn name(&self) -> &'static str {
|
||||||
|
|
@ -58,18 +90,7 @@ impl Command for HelpCommand {
|
||||||
let mut arg_string: Vec<String> = Vec::new();
|
let mut arg_string: Vec<String> = Vec::new();
|
||||||
|
|
||||||
for arg in cmd.argument_spec() {
|
for arg in cmd.argument_spec() {
|
||||||
let argument_brackets = {
|
arg_string.push(format_argument_spec(arg));
|
||||||
if arg.required {
|
|
||||||
("(", "*)")
|
|
||||||
} else {
|
|
||||||
("(", ")")
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
arg_string.push(format!(
|
|
||||||
"{}{}{}",
|
|
||||||
argument_brackets.0, arg.name, argument_brackets.1
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
format!(
|
format!(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue