Macro clapi::app [−][src]
macro_rules! app {
(=> $($rest : tt) *) => { ... };
($command_name : ident => $($rest : tt) *) => { ... };
($command_name : expr => $($rest : tt) *) => { ... };
(@ command($builder : expr)) => { ... };
(@ command($builder : expr) (description => $description : expr) $($tt : tt)
*) => { ... };
(@ command($builder : expr) (usage => $usage : expr) $($tt : tt) *) => { ... };
(@ command($builder : expr) (help => $help : expr) $($tt : tt) *) => { ... };
(@ command($builder : expr) (version => $version : expr) $($tt : tt) *) => { ... };
(@ command($builder : expr) (hidden => $hidden : expr) $($tt : tt) *) => { ... };
(@ command($builder : expr)
(handler($options : ident, $arguments : ident) => $block : block) $($tt : tt)
*) => { ... };
(@ command($builder : expr)
(handler($options : ident, $arguments : ident) => $expr : expr) $($tt : tt)
*) => { ... };
(@ command($builder : expr)
(handler(... $($arg_name : ident : $arg_type : ty), +) => $block : block)
$($tt : tt) *) => { ... };
(@ command($builder : expr)
(handler(... $($arg_name : ident : $arg_type : ty), +) => $expr : expr)
$($tt : tt) *) => { ... };
(@ command($builder : expr)
(handler($($name : ident : $ty : ty), +
$(, ... $($arg_name : ident : $arg_type : ty), +) ?) => $block :
block) $($tt : tt) *) => { ... };
(@ command($builder : expr)
(handler($($name : ident : $ty : ty), +
$(, ... $($arg_name : ident : $arg_type : ty), +) ?) => $expr :
expr) $($tt : tt) *) => { ... };
(@ command($builder : expr) (handler() => $block : block) $($tt : tt) *) => { ... };
(@ command($builder : expr) (handler() => $expr : expr) $($tt : tt) *) => { ... };
(@ command($builder : expr) (handler => $block : block) $($tt : tt) *) => { ... };
(@ command($builder : expr) (handler => $expr : expr) $($tt : tt) *) => { ... };
(@ command($builder : expr)
(@ subcommand $command_name : ident $(=> $($rest : tt) +) ?) $($tt : tt) *) => { ... };
(@ command($builder : expr)
(@ subcommand $command_name : expr $(=> $($rest : tt) +) ?) $($tt : tt) *) => { ... };
(@ command($builder : expr)
(@ option $option_name : ident $(=> $($rest : tt) +) ?) $($tt : tt) *) => { ... };
(@ command($builder : expr)
(@ option $option_name : expr $(=> $($rest : tt) +) ?) $($tt : tt) *) => { ... };
(@ option($option_builder : expr)) => { ... };
(@ option($option_builder : expr)
(@ arg $arg_name : ident $(=> $($rest : tt) +) ?) $($tt : tt) *) => { ... };
(@ option($option_builder : expr)
(@ arg $arg_name : expr $(=> $($rest : tt) +) ?) $($tt : tt) *) => { ... };
(@ option($option_builder : expr) (@ arg $(=> $($rest : tt) +) ?) $($tt : tt)
*) => { ... };
(@ option($option_builder : expr) (description => $description : expr)
$($tt : tt) *) => { ... };
(@ option($option_builder : expr) (required => $required : expr) $($tt : tt)
*) => { ... };
(@ option($option_builder : expr) (multiple => $multiple : expr) $($tt : tt)
*) => { ... };
(@ option($option_builder : expr) (hidden => $hidden : expr) $($tt : tt) *) => { ... };
(@ option($option_builder : expr) (requires_assign => $requires_assign : expr)
$($tt : tt) *) => { ... };
(@ option($option_builder : expr) (alias => $($alias : expr), +) $($tt : tt)
*) => { ... };
(@ command($builder : expr) (@ arg $arg_name : ident $(=> $($rest : tt) +) ?)
$($tt : tt) *) => { ... };
(@ command($builder : expr) (@ arg $arg_name : expr $(=> $($rest : tt) +) ?)
$($tt : tt) *) => { ... };
(@ arg($arg_builder : expr)) => { ... };
(@ arg($arg_builder : expr) (count => $count : expr) $($tt : tt) *) => { ... };
(@ arg($arg_builder : expr) (description => $description : expr) $($tt : tt)
*) => { ... };
(@ arg($arg_builder : expr) (values => $($valid_values : expr), +) $($tt : tt)
*) => { ... };
(@ arg($arg_builder : expr) (default => $($default_values : expr), +)
$($tt : tt) *) => { ... };
(@ arg($arg_builder : expr) (validator => $validator : expr) $($tt : tt) *) => { ... };
(@ arg($arg_builder : expr) (type => $ty : ty) $($tt : tt) *) => { ... };
(@ arg($arg_builder : expr) (error => $error : expr) $($tt : tt) *) => { ... };
(@ @ command => $($rest : tt) +) => { ... };
(@ @ command $command_name : ident => $($rest : tt) +) => { ... };
(@ @ command $command_name : expr => $($rest : tt) +) => { ... };
}Expand description
Constructs a CommandLine app.
You use the @subcommand, @option and @arg tags to create subcommand, option and args
respectively. A list of the tags and its properties:
@subcommand: description, usage, help, handler, hidden, @subcommand, @option and @arg.@option: description, alias, required, multiple, requires_assign and @arg.@arg: description, values, default, count, validator and type,
Usage
To create the app start with:
clapi::app! { => ... }clapi::app! { AppName => ... }clapi::app! { "AppName" => ... }
This is the root of the app where all the tags and properties are declared,
these are declared as (property => value).
- For example:
clapi::app! { MyApp =>
(description => "This is an app")
};And the tags like @subcommand, @option and @arg,
must contain a name either as an identifier or string literal for example:
(@subcommand version => ...)(@option "enable" => ...)
Each tag contains its own properties, check the list above.
Example
clapi::app!{ MyApp =>
(description => "App to sum values")
(usage => "USAGE: \n command [--times] <values...>")
(@arg values =>
(count => 1..)
(type => i64)
)
(@option times =>
(description => "Number of times to sum the values")
(@arg =>
(type => u64)
(default => 1)
)
)
(handler (times: u64, ...values: Vec<i64>) => {
let times = times as i64;
let total : i64 = values.iter().sum();
println!("{}", total * times);
})
};