pub struct Command { /* private fields */ }Expand description
A single registered subcommand.
Build with Command::new and configure via the builder methods before
passing to [App::add_command].
Implementations§
Source§impl Command
impl Command
Sourcepub fn new(name: impl Into<String>, handler: fn(&CommandContext)) -> Self
pub fn new(name: impl Into<String>, handler: fn(&CommandContext)) -> Self
Creates a new command with the given name and handler function.
The handler receives a CommandContext containing the resolved flags
and positional arguments for this invocation.
Examples found in repository?
147fn main() {
148 App::new("taskr")
149 .name("Taskr")
150 .description("A toy task manager. Demonstrates all vecli features.")
151 .version("0.1.0")
152 .main(entry)
153 .flag(
154 Flag::global("verbose")
155 .alias("v")
156 .description("Enable verbose output."),
157 )
158 .print_help_on_fail(true)
159 .add_command(
160 Command::new("add", add)
161 .description("Add a new task.")
162 .usage("<task> [--priority <level>]")
163 .flag(
164 Flag::new("priority")
165 .alias("p")
166 .description("Task priority: low, medium, or high."),
167 )
168 .strict_flags(true),
169 )
170 .add_command(
171 Command::new("list", list)
172 .description("List pending tasks.")
173 .flag(
174 Flag::new("all")
175 .alias("a")
176 .description("Include completed tasks."),
177 )
178 .subcommand(
179 Command::new("urgent", list_urgent)
180 .description("List only high-priority tasks."),
181 ),
182 )
183 .add_command(
184 Command::new("done", done)
185 .description("Mark a task as done.")
186 .usage("<task>"),
187 )
188 .add_command(
189 Command::parent("config")
190 .description("Manage taskr configuration.")
191 .print_help_if_no_args(true)
192 .subcommand(
193 Command::new("set", config_set)
194 .description("Set a config value.")
195 .usage("<key> <value>"),
196 )
197 .subcommand(Command::new("show", config_show).description("Show current config.")),
198 )
199 .add_command(Command::new("clear", clear).description("Clear all tasks."))
200 .run();
201}Sourcepub fn parent(name: impl Into<String>) -> Self
pub fn parent(name: impl Into<String>) -> Self
Examples found in repository?
147fn main() {
148 App::new("taskr")
149 .name("Taskr")
150 .description("A toy task manager. Demonstrates all vecli features.")
151 .version("0.1.0")
152 .main(entry)
153 .flag(
154 Flag::global("verbose")
155 .alias("v")
156 .description("Enable verbose output."),
157 )
158 .print_help_on_fail(true)
159 .add_command(
160 Command::new("add", add)
161 .description("Add a new task.")
162 .usage("<task> [--priority <level>]")
163 .flag(
164 Flag::new("priority")
165 .alias("p")
166 .description("Task priority: low, medium, or high."),
167 )
168 .strict_flags(true),
169 )
170 .add_command(
171 Command::new("list", list)
172 .description("List pending tasks.")
173 .flag(
174 Flag::new("all")
175 .alias("a")
176 .description("Include completed tasks."),
177 )
178 .subcommand(
179 Command::new("urgent", list_urgent)
180 .description("List only high-priority tasks."),
181 ),
182 )
183 .add_command(
184 Command::new("done", done)
185 .description("Mark a task as done.")
186 .usage("<task>"),
187 )
188 .add_command(
189 Command::parent("config")
190 .description("Manage taskr configuration.")
191 .print_help_if_no_args(true)
192 .subcommand(
193 Command::new("set", config_set)
194 .description("Set a config value.")
195 .usage("<key> <value>"),
196 )
197 .subcommand(Command::new("show", config_show).description("Show current config.")),
198 )
199 .add_command(Command::new("clear", clear).description("Clear all tasks."))
200 .run();
201}Sourcepub fn description(self, description: impl Into<String>) -> Self
pub fn description(self, description: impl Into<String>) -> Self
Sets the short description shown in the app-level help listing.
Examples found in repository?
147fn main() {
148 App::new("taskr")
149 .name("Taskr")
150 .description("A toy task manager. Demonstrates all vecli features.")
151 .version("0.1.0")
152 .main(entry)
153 .flag(
154 Flag::global("verbose")
155 .alias("v")
156 .description("Enable verbose output."),
157 )
158 .print_help_on_fail(true)
159 .add_command(
160 Command::new("add", add)
161 .description("Add a new task.")
162 .usage("<task> [--priority <level>]")
163 .flag(
164 Flag::new("priority")
165 .alias("p")
166 .description("Task priority: low, medium, or high."),
167 )
168 .strict_flags(true),
169 )
170 .add_command(
171 Command::new("list", list)
172 .description("List pending tasks.")
173 .flag(
174 Flag::new("all")
175 .alias("a")
176 .description("Include completed tasks."),
177 )
178 .subcommand(
179 Command::new("urgent", list_urgent)
180 .description("List only high-priority tasks."),
181 ),
182 )
183 .add_command(
184 Command::new("done", done)
185 .description("Mark a task as done.")
186 .usage("<task>"),
187 )
188 .add_command(
189 Command::parent("config")
190 .description("Manage taskr configuration.")
191 .print_help_if_no_args(true)
192 .subcommand(
193 Command::new("set", config_set)
194 .description("Set a config value.")
195 .usage("<key> <value>"),
196 )
197 .subcommand(Command::new("show", config_show).description("Show current config.")),
198 )
199 .add_command(Command::new("clear", clear).description("Clear all tasks."))
200 .run();
201}Sourcepub fn usage(self, usage: impl Into<String>) -> Self
pub fn usage(self, usage: impl Into<String>) -> Self
Sets the usage string shown when the user runs <cmd> --help.
Displayed as: <prog> <cmd> <usage>. For example, passing "<file> [--output <path>]"
produces mytool convert <file> [--output <path>].
If omitted and the command has registered flags, a fallback of [options] is shown.
Examples found in repository?
147fn main() {
148 App::new("taskr")
149 .name("Taskr")
150 .description("A toy task manager. Demonstrates all vecli features.")
151 .version("0.1.0")
152 .main(entry)
153 .flag(
154 Flag::global("verbose")
155 .alias("v")
156 .description("Enable verbose output."),
157 )
158 .print_help_on_fail(true)
159 .add_command(
160 Command::new("add", add)
161 .description("Add a new task.")
162 .usage("<task> [--priority <level>]")
163 .flag(
164 Flag::new("priority")
165 .alias("p")
166 .description("Task priority: low, medium, or high."),
167 )
168 .strict_flags(true),
169 )
170 .add_command(
171 Command::new("list", list)
172 .description("List pending tasks.")
173 .flag(
174 Flag::new("all")
175 .alias("a")
176 .description("Include completed tasks."),
177 )
178 .subcommand(
179 Command::new("urgent", list_urgent)
180 .description("List only high-priority tasks."),
181 ),
182 )
183 .add_command(
184 Command::new("done", done)
185 .description("Mark a task as done.")
186 .usage("<task>"),
187 )
188 .add_command(
189 Command::parent("config")
190 .description("Manage taskr configuration.")
191 .print_help_if_no_args(true)
192 .subcommand(
193 Command::new("set", config_set)
194 .description("Set a config value.")
195 .usage("<key> <value>"),
196 )
197 .subcommand(Command::new("show", config_show).description("Show current config.")),
198 )
199 .add_command(Command::new("clear", clear).description("Clear all tasks."))
200 .run();
201}Sourcepub fn strict_flags(self, strict: bool) -> Self
pub fn strict_flags(self, strict: bool) -> Self
Controls whether unknown flags cause a hard error or just a warning.
When true, passing an unrecognized flag prints an error and exits without
calling the handler. When false (the default), a warning is printed and
execution continues. Global flags are always considered known and never
trigger this check.
Examples found in repository?
147fn main() {
148 App::new("taskr")
149 .name("Taskr")
150 .description("A toy task manager. Demonstrates all vecli features.")
151 .version("0.1.0")
152 .main(entry)
153 .flag(
154 Flag::global("verbose")
155 .alias("v")
156 .description("Enable verbose output."),
157 )
158 .print_help_on_fail(true)
159 .add_command(
160 Command::new("add", add)
161 .description("Add a new task.")
162 .usage("<task> [--priority <level>]")
163 .flag(
164 Flag::new("priority")
165 .alias("p")
166 .description("Task priority: low, medium, or high."),
167 )
168 .strict_flags(true),
169 )
170 .add_command(
171 Command::new("list", list)
172 .description("List pending tasks.")
173 .flag(
174 Flag::new("all")
175 .alias("a")
176 .description("Include completed tasks."),
177 )
178 .subcommand(
179 Command::new("urgent", list_urgent)
180 .description("List only high-priority tasks."),
181 ),
182 )
183 .add_command(
184 Command::new("done", done)
185 .description("Mark a task as done.")
186 .usage("<task>"),
187 )
188 .add_command(
189 Command::parent("config")
190 .description("Manage taskr configuration.")
191 .print_help_if_no_args(true)
192 .subcommand(
193 Command::new("set", config_set)
194 .description("Set a config value.")
195 .usage("<key> <value>"),
196 )
197 .subcommand(Command::new("show", config_show).description("Show current config.")),
198 )
199 .add_command(Command::new("clear", clear).description("Clear all tasks."))
200 .run();
201}Sourcepub fn flag(self, flag: Flag) -> Self
pub fn flag(self, flag: Flag) -> Self
Registers a flag definition for this command.
Registered flags participate in alias resolution and appear in help text. Can be called multiple times to register multiple flags.
Examples found in repository?
147fn main() {
148 App::new("taskr")
149 .name("Taskr")
150 .description("A toy task manager. Demonstrates all vecli features.")
151 .version("0.1.0")
152 .main(entry)
153 .flag(
154 Flag::global("verbose")
155 .alias("v")
156 .description("Enable verbose output."),
157 )
158 .print_help_on_fail(true)
159 .add_command(
160 Command::new("add", add)
161 .description("Add a new task.")
162 .usage("<task> [--priority <level>]")
163 .flag(
164 Flag::new("priority")
165 .alias("p")
166 .description("Task priority: low, medium, or high."),
167 )
168 .strict_flags(true),
169 )
170 .add_command(
171 Command::new("list", list)
172 .description("List pending tasks.")
173 .flag(
174 Flag::new("all")
175 .alias("a")
176 .description("Include completed tasks."),
177 )
178 .subcommand(
179 Command::new("urgent", list_urgent)
180 .description("List only high-priority tasks."),
181 ),
182 )
183 .add_command(
184 Command::new("done", done)
185 .description("Mark a task as done.")
186 .usage("<task>"),
187 )
188 .add_command(
189 Command::parent("config")
190 .description("Manage taskr configuration.")
191 .print_help_if_no_args(true)
192 .subcommand(
193 Command::new("set", config_set)
194 .description("Set a config value.")
195 .usage("<key> <value>"),
196 )
197 .subcommand(Command::new("show", config_show).description("Show current config.")),
198 )
199 .add_command(Command::new("clear", clear).description("Clear all tasks."))
200 .run();
201}Sourcepub fn subcommand(self, subcommand: Command) -> Self
pub fn subcommand(self, subcommand: Command) -> Self
Examples found in repository?
147fn main() {
148 App::new("taskr")
149 .name("Taskr")
150 .description("A toy task manager. Demonstrates all vecli features.")
151 .version("0.1.0")
152 .main(entry)
153 .flag(
154 Flag::global("verbose")
155 .alias("v")
156 .description("Enable verbose output."),
157 )
158 .print_help_on_fail(true)
159 .add_command(
160 Command::new("add", add)
161 .description("Add a new task.")
162 .usage("<task> [--priority <level>]")
163 .flag(
164 Flag::new("priority")
165 .alias("p")
166 .description("Task priority: low, medium, or high."),
167 )
168 .strict_flags(true),
169 )
170 .add_command(
171 Command::new("list", list)
172 .description("List pending tasks.")
173 .flag(
174 Flag::new("all")
175 .alias("a")
176 .description("Include completed tasks."),
177 )
178 .subcommand(
179 Command::new("urgent", list_urgent)
180 .description("List only high-priority tasks."),
181 ),
182 )
183 .add_command(
184 Command::new("done", done)
185 .description("Mark a task as done.")
186 .usage("<task>"),
187 )
188 .add_command(
189 Command::parent("config")
190 .description("Manage taskr configuration.")
191 .print_help_if_no_args(true)
192 .subcommand(
193 Command::new("set", config_set)
194 .description("Set a config value.")
195 .usage("<key> <value>"),
196 )
197 .subcommand(Command::new("show", config_show).description("Show current config.")),
198 )
199 .add_command(Command::new("clear", clear).description("Clear all tasks."))
200 .run();
201}Sourcepub fn print_help_if_no_args(self, print: bool) -> Self
pub fn print_help_if_no_args(self, print: bool) -> Self
Examples found in repository?
147fn main() {
148 App::new("taskr")
149 .name("Taskr")
150 .description("A toy task manager. Demonstrates all vecli features.")
151 .version("0.1.0")
152 .main(entry)
153 .flag(
154 Flag::global("verbose")
155 .alias("v")
156 .description("Enable verbose output."),
157 )
158 .print_help_on_fail(true)
159 .add_command(
160 Command::new("add", add)
161 .description("Add a new task.")
162 .usage("<task> [--priority <level>]")
163 .flag(
164 Flag::new("priority")
165 .alias("p")
166 .description("Task priority: low, medium, or high."),
167 )
168 .strict_flags(true),
169 )
170 .add_command(
171 Command::new("list", list)
172 .description("List pending tasks.")
173 .flag(
174 Flag::new("all")
175 .alias("a")
176 .description("Include completed tasks."),
177 )
178 .subcommand(
179 Command::new("urgent", list_urgent)
180 .description("List only high-priority tasks."),
181 ),
182 )
183 .add_command(
184 Command::new("done", done)
185 .description("Mark a task as done.")
186 .usage("<task>"),
187 )
188 .add_command(
189 Command::parent("config")
190 .description("Manage taskr configuration.")
191 .print_help_if_no_args(true)
192 .subcommand(
193 Command::new("set", config_set)
194 .description("Set a config value.")
195 .usage("<key> <value>"),
196 )
197 .subcommand(Command::new("show", config_show).description("Show current config.")),
198 )
199 .add_command(Command::new("clear", clear).description("Clear all tasks."))
200 .run();
201}