No description
Find a file
2015-03-15 17:17:52 -04:00
docs Added support for subcommands 2015-03-15 17:17:52 -04:00
examples Added support for subcommands 2015-03-15 17:17:52 -04:00
src Added support for subcommands 2015-03-15 17:17:52 -04:00
.gitignore Updated readme and removed Cargo.lock from git 2015-02-28 19:31:24 -05:00
.travis.yml Adding .travis.yml file 2015-03-01 15:46:46 -05:00
Cargo.lock Added support for subcommands 2015-03-15 17:17:52 -04:00
Cargo.toml Added support for subcommands 2015-03-15 17:17:52 -04:00
LICENSE-MIT Re-release under MIT license 2015-03-02 10:10:23 -05:00
main.rs Added support for subcommands 2015-03-15 17:17:52 -04:00
README.md Update README.md 2015-03-01 17:53:53 -05:00

clap Travis-CI

Command Line Argument Parser written in Rust

A simply library for parsing command line arguments when writing command line and console applications.

You can use clap to lay out a list of possible valid command line arguments and let clap parse the string given by the user at runtime. When using clap you define a set of parameters and rules for your arguments and at runtime clap will determine their validity. Also, clap provides the traditional version and help switches 'for free' by parsing the list of possible valid arguments lazily at runtime. i.e. only when it's been determined that the user wants or needs to see the help and version information.

After defining a list of possible valid arguments you get a list of matches that the user supplied at runtime. You can then use this list to determine the functioning of your program.

Example:

extern crate clap;
use clap::{Arg, App};

// ...

let matches = App::new("MyApp")
   					.version("1.0")
   					.author("Kevin K. <kbknapp@gmail.com>")
   					.about("Does awesome things")
   					.arg(Arg::new("config")
   								.short("c")
   								.long("config")
   								.help("Sets a custom config file")
   								.takes_value(true))
   					.arg(Arg::new("output")
   								.help("Sets an optional output file")
   								.index(1))
   					.arg(Arg::new("debug")
   								.short("d")
									.multiple(true)
   								.help("Turn debugging information on"))
   					.get_matches();

   if let Some(o) = matches.value_of("output") {
   	println!("Value for output: {}", o);
   }

   if let Some(c) = matches.value_of("config") {
   	println!("Value for config: {}", c);
   }

match matches.occurrences_of("debug") {
		0 => println!("Debug mode is off"),
   	1 => println!("Debug mode is kind of on"),
   	2 => println!("Debug mode is on"),
   	3 | _ => println!("Don't be crazy"),
}

// more porgram logic goes here...

If you were to compile the above program and run it with the flag --help or -h the following output woud be presented

$ myprog --help
MyApp 1.0
Kevin K. <kbknapp@gmail.com>
Does awesome things

USAGE:
	MyApp [FLAGS] [OPTIONS] [POSITIONAL]

FLAGS:
	-d   			Turn debugging information on
	-h,--help		Prints this message
	-v,--version	Prints version information

OPTIONS:
    -c,--config <config>		Sets a custom config file

POSITIONAL ARGUMENTS:
    output			Sets an optional output file

Installation

Simply add clap as a dependecy in your Cargo.toml file to use from crates.io:

[dependencies]
clap = "*"

Or to simply track the latest on the master branch at github:

[dependencies.clap]
git = "https://github.com/kbknapp/clap-rs.git"

Then run cargo build or cargo update for your project.

More Information

You can find complete documentation on the github-pages site for this project.