improve completion
This commit is contained in:
parent
d769db43f5
commit
2f0258959b
|
@ -132,15 +132,27 @@ fn print_simple_completion(
|
||||||
}
|
}
|
||||||
if args.is_empty() { return; }
|
if args.is_empty() { return; }
|
||||||
|
|
||||||
|
record_done_arguments(&mut done, &cli_cmd.info.parameters, &args);
|
||||||
|
|
||||||
let prefix = args.pop().unwrap(); // match on last arg
|
let prefix = args.pop().unwrap(); // match on last arg
|
||||||
|
|
||||||
record_done_arguments(&mut done, &cli_cmd.info.parameters, &args);
|
// complete option-name or option-value ?
|
||||||
|
if !prefix.starts_with("-") && args.len() > 0 {
|
||||||
|
let last = &args[args.len()-1];
|
||||||
|
if last.starts_with("--") && last.len() > 2 {
|
||||||
|
let prop_name = last[2..].to_owned();
|
||||||
|
if let Some((_, schema)) = cli_cmd.info.parameters.properties.get::<str>(&prop_name) {
|
||||||
|
print_property_completion(schema, &prefix);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (name, (optional, schema)) in &cli_cmd.info.parameters.properties {
|
for (name, (optional, schema)) in &cli_cmd.info.parameters.properties {
|
||||||
if done.contains(*name) { continue; }
|
if done.contains(*name) { continue; }
|
||||||
let test = String::from("--") + name;
|
let option = String::from("--") + name;
|
||||||
if test.starts_with(&prefix) {
|
if option.starts_with(&prefix) {
|
||||||
println!("{}", test);
|
println!("{}", option);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue