fn print_simple_completion(
cli_cmd: &CliCommand,
done: &mut HashMap<String, String>,
- arg_param: &[&str],
+ all_arg_param: &[&str], // this is always the full list
+ arg_param: &[&str], // we remove done arguments
args: &[String],
) {
// fixme: arg_param, fixed_param
let prop_name = arg_param[0];
if args.len() > 1 {
record_done_argument(done, &cli_cmd.info.parameters, prop_name, &args[0]);
- print_simple_completion(cli_cmd, done, &arg_param[1..], &args[1..]);
+ print_simple_completion(cli_cmd, done, arg_param, &arg_param[1..], &args[1..]);
return;
} else if args.len() == 1 {
record_done_argument(done, &cli_cmd.info.parameters, prop_name, &args[0]);
for (name, (_optional, _schema)) in &cli_cmd.info.parameters.properties {
if done.contains_key(*name) { continue; }
+ if all_arg_param.contains(name) { continue; }
let option = String::from("--") + name;
if option.starts_with(prefix) {
println!("{}", option);
match def {
CommandLineInterface::Simple(_) => {
- print_simple_completion(help_cmd, &mut done, &help_cmd.arg_param, args);
+ print_simple_completion(help_cmd, &mut done, &help_cmd.arg_param, &help_cmd.arg_param, args);
return;
}
CommandLineInterface::Nested(map) => {
let first = &args[0];
if first.starts_with("-") {
- print_simple_completion(help_cmd, &mut done, &help_cmd.arg_param, args);
+ print_simple_completion(help_cmd, &mut done, &help_cmd.arg_param, &help_cmd.arg_param, args);
return;
}
cli_cmd.fixed_param.iter().map(|(key, value)| {
record_done_argument(&mut done, &cli_cmd.info.parameters, &key, &value);
});
- print_simple_completion(cli_cmd, &mut done, &cli_cmd.arg_param, args);
+ print_simple_completion(cli_cmd, &mut done, &cli_cmd.arg_param, &cli_cmd.arg_param, args);
return;
}
CommandLineInterface::Nested(map) => {