feat: show children

This commit is contained in:
Soph :3 2025-09-14 17:04:01 +03:00
parent a8be9b71b2
commit 1c2cc8f1fe

View file

@ -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!(