add opt.rs
This commit is contained in:
37
src/opt.rs
Normal file
37
src/opt.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
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<Options> {
|
||||
let mut options = Options::new();
|
||||
options.parse_args()?;
|
||||
Ok(options)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user