• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

basic_command(name: &'static str) -> clap::Command1 pub fn basic_command(name: &'static str) -> clap::Command {
2     clap::Command::new(name)
3         .arg(
4             clap::Arg::new("config")
5                 .short('c')
6                 .global(true)
7                 .action(clap::ArgAction::SetTrue),
8         )
9         .arg(
10             clap::Arg::new("v")
11                 .short('v')
12                 .conflicts_with("config")
13                 .action(clap::ArgAction::SetTrue),
14         )
15         .subcommand(
16             clap::Command::new("test").about("Subcommand").arg(
17                 clap::Arg::new("debug")
18                     .short('d')
19                     .action(clap::ArgAction::Count),
20             ),
21         )
22 }
23 
feature_sample_command(name: &'static str) -> clap::Command24 pub fn feature_sample_command(name: &'static str) -> clap::Command {
25     clap::Command::new(name)
26         .version("3.0")
27         .propagate_version(true)
28         .about("Tests completions")
29         .arg(
30             clap::Arg::new("file")
31                 .value_hint(clap::ValueHint::FilePath)
32                 .help("some input file"),
33         )
34         .arg(
35             clap::Arg::new("config")
36                 .action(clap::ArgAction::Count)
37                 .help("some config file")
38                 .short('c')
39                 .visible_short_alias('C')
40                 .long("config")
41                 .visible_alias("conf"),
42         )
43         .arg(clap::Arg::new("choice").value_parser(["first", "second"]))
44         .subcommand(
45             clap::Command::new("test").about("tests things").arg(
46                 clap::Arg::new("case")
47                     .long("case")
48                     .action(clap::ArgAction::Set)
49                     .help("the case to test"),
50             ),
51         )
52 }
53 
special_commands_command(name: &'static str) -> clap::Command54 pub fn special_commands_command(name: &'static str) -> clap::Command {
55     feature_sample_command(name)
56         .subcommand(
57             clap::Command::new("some_cmd")
58                 .about("tests other things")
59                 .arg(
60                     clap::Arg::new("config")
61                         .long("config")
62                         .hide(true)
63                         .action(clap::ArgAction::Set)
64                         .require_equals(true)
65                         .help("the other case to test"),
66                 )
67                 .arg(clap::Arg::new("path").num_args(1..)),
68         )
69         .subcommand(clap::Command::new("some-cmd-with-hyphens").alias("hyphen"))
70         .subcommand(clap::Command::new("some-hidden-cmd").hide(true))
71 }
72 
quoting_command(name: &'static str) -> clap::Command73 pub fn quoting_command(name: &'static str) -> clap::Command {
74     clap::Command::new(name)
75         .version("3.0")
76         .arg(
77             clap::Arg::new("single-quotes")
78                 .long("single-quotes")
79                 .action(clap::ArgAction::SetTrue)
80                 .help("Can be 'always', 'auto', or 'never'"),
81         )
82         .arg(
83             clap::Arg::new("double-quotes")
84                 .long("double-quotes")
85                 .action(clap::ArgAction::SetTrue)
86                 .help("Can be \"always\", \"auto\", or \"never\""),
87         )
88         .arg(
89             clap::Arg::new("backticks")
90                 .long("backticks")
91                 .action(clap::ArgAction::SetTrue)
92                 .help("For more information see `echo test`"),
93         )
94         .arg(
95             clap::Arg::new("backslash")
96                 .long("backslash")
97                 .action(clap::ArgAction::SetTrue)
98                 .help("Avoid '\\n'"),
99         )
100         .arg(
101             clap::Arg::new("brackets")
102                 .long("brackets")
103                 .action(clap::ArgAction::SetTrue)
104                 .help("List packages [filter]"),
105         )
106         .arg(
107             clap::Arg::new("expansions")
108                 .long("expansions")
109                 .action(clap::ArgAction::SetTrue)
110                 .help("Execute the shell command with $SHELL"),
111         )
112         .subcommands([
113             clap::Command::new("cmd-single-quotes").about("Can be 'always', 'auto', or 'never'"),
114             clap::Command::new("cmd-double-quotes")
115                 .about("Can be \"always\", \"auto\", or \"never\""),
116             clap::Command::new("cmd-backticks").about("For more information see `echo test`"),
117             clap::Command::new("cmd-backslash").about("Avoid '\\n'"),
118             clap::Command::new("cmd-brackets").about("List packages [filter]"),
119             clap::Command::new("cmd-expansions").about("Execute the shell command with $SHELL"),
120         ])
121 }
122 
aliases_command(name: &'static str) -> clap::Command123 pub fn aliases_command(name: &'static str) -> clap::Command {
124     clap::Command::new(name)
125         .version("3.0")
126         .about("testing bash completions")
127         .arg(
128             clap::Arg::new("flag")
129                 .short('f')
130                 .visible_short_alias('F')
131                 .long("flag")
132                 .action(clap::ArgAction::SetTrue)
133                 .visible_alias("flg")
134                 .help("cmd flag"),
135         )
136         .arg(
137             clap::Arg::new("option")
138                 .short('o')
139                 .visible_short_alias('O')
140                 .long("option")
141                 .visible_alias("opt")
142                 .help("cmd option")
143                 .action(clap::ArgAction::Set),
144         )
145         .arg(clap::Arg::new("positional"))
146 }
147 
sub_subcommands_command(name: &'static str) -> clap::Command148 pub fn sub_subcommands_command(name: &'static str) -> clap::Command {
149     feature_sample_command(name).subcommand(
150         clap::Command::new("some_cmd")
151             .about("top level subcommand")
152             .subcommand(
153                 clap::Command::new("sub_cmd").about("sub-subcommand").arg(
154                     clap::Arg::new("config")
155                         .long("config")
156                         .action(clap::ArgAction::Set)
157                         .value_parser([clap::builder::PossibleValue::new(
158                             "Lest quotes aren't escaped.",
159                         )])
160                         .help("the other case to test"),
161                 ),
162             ),
163     )
164 }
165 
value_hint_command(name: &'static str) -> clap::Command166 pub fn value_hint_command(name: &'static str) -> clap::Command {
167     clap::Command::new(name)
168         .arg(
169             clap::Arg::new("choice")
170                 .long("choice")
171                 .action(clap::ArgAction::Set)
172                 .value_parser(["bash", "fish", "zsh"]),
173         )
174         .arg(
175             clap::Arg::new("unknown")
176                 .long("unknown")
177                 .value_hint(clap::ValueHint::Unknown),
178         )
179         .arg(
180             clap::Arg::new("other")
181                 .long("other")
182                 .value_hint(clap::ValueHint::Other),
183         )
184         .arg(
185             clap::Arg::new("path")
186                 .long("path")
187                 .short('p')
188                 .value_hint(clap::ValueHint::AnyPath),
189         )
190         .arg(
191             clap::Arg::new("file")
192                 .long("file")
193                 .short('f')
194                 .value_hint(clap::ValueHint::FilePath),
195         )
196         .arg(
197             clap::Arg::new("dir")
198                 .long("dir")
199                 .short('d')
200                 .value_hint(clap::ValueHint::DirPath),
201         )
202         .arg(
203             clap::Arg::new("exe")
204                 .long("exe")
205                 .short('e')
206                 .value_hint(clap::ValueHint::ExecutablePath),
207         )
208         .arg(
209             clap::Arg::new("cmd_name")
210                 .long("cmd-name")
211                 .value_hint(clap::ValueHint::CommandName),
212         )
213         .arg(
214             clap::Arg::new("cmd")
215                 .long("cmd")
216                 .short('c')
217                 .value_hint(clap::ValueHint::CommandString),
218         )
219         .arg(
220             clap::Arg::new("command_with_args")
221                 .action(clap::ArgAction::Set)
222                 .num_args(1..)
223                 .trailing_var_arg(true)
224                 .value_hint(clap::ValueHint::CommandWithArguments),
225         )
226         .arg(
227             clap::Arg::new("user")
228                 .short('u')
229                 .long("user")
230                 .value_hint(clap::ValueHint::Username),
231         )
232         .arg(
233             clap::Arg::new("host")
234                 .short('H')
235                 .long("host")
236                 .value_hint(clap::ValueHint::Hostname),
237         )
238         .arg(
239             clap::Arg::new("url")
240                 .long("url")
241                 .value_hint(clap::ValueHint::Url),
242         )
243         .arg(
244             clap::Arg::new("email")
245                 .long("email")
246                 .value_hint(clap::ValueHint::EmailAddress),
247         )
248 }
249 
assert_matches_path( expected_path: impl AsRef<std::path::Path>, gen: impl clap_complete::Generator, mut cmd: clap::Command, name: &'static str, )250 pub fn assert_matches_path(
251     expected_path: impl AsRef<std::path::Path>,
252     gen: impl clap_complete::Generator,
253     mut cmd: clap::Command,
254     name: &'static str,
255 ) {
256     let mut buf = vec![];
257     clap_complete::generate(gen, &mut cmd, name, &mut buf);
258 
259     snapbox::Assert::new()
260         .action_env("SNAPSHOTS")
261         .matches_path(expected_path, buf);
262 }
263