Crate clapi[−][src]
Expand description
Clapi
Clapi (Command-Line API) is a framework for create command line applications.
Currently clapi provides several methods for create command line applications:
- Parsing the arguments
- Function handlers
- Macros
- Macros attributes
See the examples below creating the same app using the 4 methods.
Parsing the arguments
use clapi::{Command, CommandOption, Argument, CommandLine};
use clapi::validator::validate_type;
use std::num::NonZeroUsize;
fn main() -> clapi::Result<()> {
let command = Command::new("echo")
.version("1.0")
.description("outputs the given values on the console")
.arg(Argument::one_or_more("values"))
.option(
CommandOption::new("times")
.alias("t")
.description("number of times to repeat")
.arg(
Argument::new()
.validator(validate_type::<NonZeroUsize>())
.validation_error("expected number greater than 0")
.default(NonZeroUsize::new(1).unwrap()),
),
).handler(|opts, args| {
let times = opts.convert::<usize>("times").unwrap();
let values = args.get_raw_args()
.map(|s| s.to_string())
.collect::<Vec<String>>()
.join(" ") as String;
for _ in 0..times {
println!("{}", values);
}
Ok(())
});
CommandLine::new(command)
.use_default_help()
.use_default_suggestions()
.run()
.map_err(|e| e.exit())
}Function handlers
use clapi::validator::validate_type;
use clapi::{Argument, Command, CommandLine, CommandOption};
fn main() -> clapi::Result<()> {
let command = Command::new("MyApp")
.subcommand(
Command::new("repeat")
.arg(Argument::one_or_more("values"))
.option(
CommandOption::new("times").alias("t").arg(
Argument::with_name("times")
.validator(validate_type::<u64>())
.default(1),
),
)
.handler(|opts, args| {
let times = opts.get_arg("times").unwrap().convert::<u64>()?;
let values = args
.get("values")
.unwrap()
.convert_all::<String>()?
.join(" ");
for _ in 0..times {
println!("{}", values);
}
Ok(())
}),
);
CommandLine::new(command)
.use_default_suggestions()
.use_default_help()
.run()
}Macro
use std::num::NonZeroUsize;
fn main() -> clapi::Result<()> {
let cli = clapi::app!{ echo =>
(version => "1.0")
(description => "outputs the given values on the console")
(@option times =>
(alias => "t")
(description => "number of times to repeat")
(@arg =>
(type => NonZeroUsize)
(default => NonZeroUsize::new(1).unwrap())
(error => "expected number greater than 0")
)
)
(@arg values => (count => 1..))
(handler (times: usize, ...args: Vec<String>) => {
let values = args.join(" ");
for _ in 0..times {
println!("{}", values);
}
})
};
cli.use_default_suggestions()
.use_default_help()
.run()
.map_err(|e| e.exit())
}Macro attributes
Requires macros feature enable.
use clapi::macros::*;
use std::num::NonZeroUsize;
#[command(name="echo", description="outputs the given values on the console", version="1.0")]
#[arg(values, min=1)]
#[option(times,
alias="t",
description="number of times to repeat",
default=1,
error="expected number greater than 0"
)]
fn main(times: NonZeroUsize, values: Vec<String>) {
let values = values.join(" ");
for _ in 0..times.get() {
println!("{}", values);
}
}Modules
Utilities for provide commands help information.
Macro attributes for create command-line apps. Require macros feature enable.
Utilities for provide suggestions.
Representation of the command-line command, option and args.
Converts the command-line arguments into tokens.
Exposes the struct Type for arguments type checking.
Utilities and extensions intended for internal use.
Provides the Validator trait used for validate the values of an Argument.
Macros
Constructs a CommandLine app.
Constructs a CommandLine app using this crate Cargo.toml info.
Returns this crate description.
Returns this crate name.
Returns this crate version.
Constructs and run a CommandLine app.
Constructs and run a CommandLine app using this crate Cargo.toml info.
Structs
An iterator over the aliases of CommandOption.
Represents the number of values an argument takes.
Represents the arguments of an option or command.
List of arguments of an option or command.
A command-line command.
Represents a command-line app.
Represents a command-line option.
Provides configuration info for parsing a command.
A builder for Context.
An error in a command-line operation.
A mutable iterator over the subcommands of a Command.
Represents a collection of CommandOptions.
Represents the result of a parse operation and provides a set of methods to query over the values.
A command-line argument parser.
An iterator over option prefixes.
An iterator over the &str values of the arguments of an ArgumentList.
An iterator over the values of an argument or option.
Enums
Types of errors.
Type Definitions
A convenient Result type.
