hyper_scripter/args/
completion.rs1use clap::Parser;
2use std::num::NonZeroUsize;
3
4#[derive(Parser, Debug)]
5#[clap(disable_help_flag = true, allow_hyphen_values = true)]
6pub enum Completion {
7 LS {
8 #[clap(long)]
9 limit: Option<NonZeroUsize>,
10 #[clap(long)]
11 bang: bool,
12 #[clap(long)]
13 name: Option<String>, #[clap(required = true, min_values = 1)]
15 args: Vec<String>,
16 },
17 Alias {
18 #[clap(required = true, min_values = 1)]
19 args: Vec<String>,
20 },
21 Home {
22 #[clap(required = true, min_values = 1)]
23 args: Vec<String>,
24 },
25 ParseRun {
26 #[clap(required = true, min_values = 1)]
27 args: Vec<String>,
28 },
29 NoSubcommand {
30 #[clap(required = true, min_values = 1)]
31 args: Vec<String>,
32 },
33}
34
35impl Completion {
36 pub fn from_args(args: &[String]) -> Option<Completion> {
37 let args = &args[1..];
38 if args.first().map(AsRef::as_ref) == Some("completion") {
39 log::info!("補全模式 {:?}", args);
40 Some(Completion::parse_from(args))
41 } else {
42 None
43 }
44 }
45}