Skip to main content

Command

Struct Command 

Source
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

Source

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?
examples/taskr.rs (line 160)
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}
Source

pub fn parent(name: impl Into<String>) -> Self

Examples found in repository?
examples/taskr.rs (line 189)
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}
Source

pub fn description(self, description: impl Into<String>) -> Self

Sets the short description shown in the app-level help listing.

Examples found in repository?
examples/taskr.rs (line 161)
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}
Source

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?
examples/taskr.rs (line 162)
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}
Source

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?
examples/taskr.rs (line 168)
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}
Source

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?
examples/taskr.rs (lines 163-167)
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}
Source

pub fn subcommand(self, subcommand: Command) -> Self

Examples found in repository?
examples/taskr.rs (lines 178-181)
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}
Source

pub fn print_help_if_no_args(self, print: bool) -> Self

Examples found in repository?
examples/taskr.rs (line 191)
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}

Trait Implementations§

Source§

impl Default for Command

Source§

fn default() -> Command

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.