From 75f1d1c55cb4b96a9118d80e04a603cca891042c Mon Sep 17 00:00:00 2001 From: "Hatter Jiang@Pixelbook" Date: Sat, 31 Aug 2019 14:49:32 +0800 Subject: [PATCH] modify options --- src/main.rs | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/main.rs b/src/main.rs index 86940b2..cf14492 100644 --- a/src/main.rs +++ b/src/main.rs @@ -42,25 +42,33 @@ struct Options { file: String, } -fn main() { - let mut options = Options { - version: false, - verbose: false, - replace_file: false, - tab_width: 4u16, - file: String::new(), - }; - { - let mut ap = ArgumentParser::new(); - ap.set_description("prettyjson - command line JSON pretty tool."); - ap.refer(&mut options.tab_width).add_option(&["-w", "--tab-width"], Store, "Tab width, default 4"); - ap.refer(&mut options.version).add_option(&["-V", "--version"], StoreTrue, "Print version"); - ap.refer(&mut options.verbose).add_option(&["-v", "--verbose"], StoreTrue, "Verbose"); - ap.refer(&mut options.replace_file).add_option(&["-R", "--replace-file"], StoreTrue, "Replace file"); - ap.refer(&mut options.file).add_argument("FILE", Store, "FILE"); - ap.parse_args_or_exit(); +impl Options { + pub fn new() -> Options { + Options { + version: false, + verbose: false, + replace_file: false, + tab_width: 4u16, + file: String::new(), + } } + pub fn parse_args(&mut self) { + let mut ap = ArgumentParser::new(); + ap.set_description("prettyjson - command line JSON pretty tool."); + ap.refer(&mut self.tab_width).add_option(&["-w", "--tab-width"], Store, "Tab width, default 4"); + 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.replace_file).add_option(&["-R", "--replace-file"], StoreTrue, "Replace file"); + ap.refer(&mut self.file).add_argument("FILE", Store, "FILE"); + ap.parse_args_or_exit(); + } +} + +fn main() { + let mut options = Options::new(); + options.parse_args(); + if options.verbose { print_message(MessageType::DEBUG, &format!("prettyjson version: {}, git hash: {}", VERSION, GIT_HASH)); }