extern crate anyhow; extern crate clap; pub mod price_result; pub mod parser; pub mod price_checker; use price_result::PriceResult; use price_checker::PriceChecker; use url::Url; use anyhow::Result; use clap::{Arg, App, SubCommand}; fn main() -> Result<()> { let matches = App::new("Price checker") .version("0.1") .author("RĂ©mi BERTHO ") .about("Check price") .subcommand(SubCommand::with_name("check") .about("Check from an URL") .arg(Arg::with_name("URL") .required(true) .multiple(true) .help("The URL to get price"))) .get_matches(); match matches.subcommand() { ("check", Some(check_matches)) => { let price_checker = PriceChecker::new().unwrap(); for url_str in check_matches.values_of("URL").unwrap() { let url = Url::parse(url_str)?; println!("{}", price_checker.get_price(url)?) ; } }, _ => { println!("{}", matches.usage()); }, } Ok(()) }