use rust_util::XResult; use argparse::{ArgumentParser, StoreTrue, Store}; pub struct Options { pub version: bool, pub verbose: bool, pub config: String, } impl Options { pub fn new() -> Options { Options { version: false, verbose: false, config: "".to_string(), } } pub fn parse_args(&mut self) -> XResult<()> { { let mut ap = ArgumentParser::new(); ap.set_description("oss_backupd - command line OSS backup tool."); ap.refer(&mut self.version).add_option(&["-V", "--version"], StoreTrue, "Print version"); ap.refer(&mut self.verbose).add_option(&["-v", "--verbose"], StoreTrue, "Verbose"); ap.refer(&mut self.config).add_option(&["-c", "--config"], Store, "Config file"); ap.parse_args_or_exit(); } Ok(()) } pub fn new_and_parse_args() -> XResult { let mut options = Options::new(); options.parse_args()?; Ok(options) } }