Skip to navigation
Rust command line argument parse clap
31.01.23
use std::path::PathBuf; use clap::{arg, command, value_parser, ArgAction, Command}; fn main() { let matches = command!() // requires `cargo` feature .arg(arg!([name] "Optional name to operate on")) .arg( arg!( -c --config
"Sets a custom config file" ) // We don't have syntax yet for optional options, so manually calling `required` .required(false) .value_parser(value_parser!(PathBuf)), ) .arg(arg!( -d --debug ... "Turn debugging information on" )) .subcommand( Command::new("test") .about("does testing things") .arg(arg!(-l --list "lists test values").action(ArgAction::SetTrue)), ) .get_matches(); // You can check the value provided by positional arguments, or option arguments if let Some(name) = matches.get_one::
("name") { println!("Value for name: {}", name); } if let Some(config_path) = matches.get_one::
("config") { println!("Value for config: {}", config_path.display()); } // You can see how many times a particular flag or argument occurred // Note, only flags can have multiple occurrences match matches .get_one::
("debug") .expect("Count's are defaulted") { 0 => println!("Debug mode is off"), 1 => println!("Debug mode is kind of on"), 2 => println!("Debug mode is on"), _ => println!("Don't be crazy"), } // You can check for the existence of subcommands, and if found use their // matches just as you would the top level cmd if let Some(matches) = matches.subcommand_matches("test") { // "$ myapp test" was run if matches.get_flag("list") { // "$ myapp test -l" was run println!("Printing testing lists..."); } else { println!("Not printing testing lists..."); } } // Continued program logic goes here... }
https://docs.rs/clap/latest/clap/_tutorial/
Reply
Anonymous
extern crate ct_nox; use ct_nox::ct_nox::{get_hello}; use std::path::PathBuf; use clap::{arg, command, value_parser, ArgAction, Command, Arg }; fn main() { // https://docs.rs/clap/latest/clap/_tutorial/index.html let matches = command!() .arg(Arg::new("password").short('p').long("password")) .get_matches(); if let Some(password) = matches.get_one::
("password") { println!("password: {}", password); } //let x = get_hello(); //println!("{:?}",x); }
31.01.23
Reply
Anonymous
Information Epoch 1742358615
Data dominates.
Home
Notebook
Contact us