From 6d89c68a2609925f2e2c70f6fa90fc698e331614 Mon Sep 17 00:00:00 2001 From: "Hatter Jiang@Pixelbook" Date: Sat, 3 Aug 2019 23:08:37 +0800 Subject: [PATCH] move parse_size to opt.rs --- src/main.rs | 6 +----- src/opt.rs | 43 ++++++++++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/main.rs b/src/main.rs index e78231f..c94b3bb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -293,17 +293,13 @@ fn find_text_files(options: &Options, dir_path: &Path) { fn main() -> XResult<()> { let mut options = Options::new(); - options.parse_args(); + options.parse_args().ok(); if options.version { print_version(); return Ok(()); } - options.parsed_huge_file_size = parse_size(&options.huge_file_size)? as u64; - options.parsed_large_text_file_size = parse_size(&options.large_text_file_size)? as u64; - options.parsed_large_line_size = parse_size(&options.large_line_size)? as u64; - let dir_path = match get_absolute_path(&options.dir) { None => { return Err(new_box_error(&format!("Cannot find dir: {}", options.dir))); diff --git a/src/opt.rs b/src/opt.rs index df62260..5a6985f 100644 --- a/src/opt.rs +++ b/src/opt.rs @@ -1,6 +1,8 @@ use argparse::{ArgumentParser, StoreTrue, Store}; +use rust_util::*; + pub struct Options { pub version: bool, pub target: String, @@ -42,22 +44,29 @@ impl Options { } } - pub fn parse_args(&mut self) { - let mut ap = ArgumentParser::new(); - ap.set_description("finding - command line find tool."); - ap.refer(&mut self.target).add_option(&["-t", "--target"], Store, "Target, text, huge[file], default text"); - ap.refer(&mut self.dir).add_option(&["-d", "--dir"], Store, "Target directory, default current dir(.)"); - ap.refer(&mut self.huge_file_size).add_option(&["--huge-file"], Store, "Huge file size, default 100M"); - ap.refer(&mut self.large_text_file_size).add_option(&["--large-text-file"], Store, "Large text file, default 10M"); - ap.refer(&mut self.file_ext).add_option(&["-f", "--file-ext"], Store, "File ext, default all"); - ap.refer(&mut self.ignore_case).add_option(&["-i", "--ignore-case"], StoreTrue, "Ignore case, default false"); - ap.refer(&mut self.filter_large_line).add_option(&["--filter-large-line"], StoreTrue, "Filter large line"); - ap.refer(&mut self.large_line_size).add_option(&["--large-line-size"], Store, "Large line, default 10KB"); - ap.refer(&mut self.scan_dot_git).add_option(&["--scan-dot-git"], StoreTrue, "Scan dot git"); - ap.refer(&mut self.skip_link_dir).add_option(&["--skip-link-dir"], StoreTrue, "Skip link dir"); - ap.refer(&mut self.version).add_option(&["-v", "--version"], StoreTrue, "Print version"); - ap.refer(&mut self.verbose).add_option(&["--verbose"], StoreTrue, "Verbose"); - ap.refer(&mut self.search_text).add_argument("SEARCH TEXT", Store, "Search text"); - ap.parse_args_or_exit(); + pub fn parse_args(&mut self) -> XResult<()> { + { + let mut ap = ArgumentParser::new(); + ap.set_description("finding - command line find tool."); + ap.refer(&mut self.target).add_option(&["-t", "--target"], Store, "Target, text, huge[file], default text"); + ap.refer(&mut self.dir).add_option(&["-d", "--dir"], Store, "Target directory, default current dir(.)"); + ap.refer(&mut self.huge_file_size).add_option(&["--huge-file"], Store, "Huge file size, default 100M"); + ap.refer(&mut self.large_text_file_size).add_option(&["--large-text-file"], Store, "Large text file, default 10M"); + ap.refer(&mut self.file_ext).add_option(&["-f", "--file-ext"], Store, "File ext, default all"); + ap.refer(&mut self.ignore_case).add_option(&["-i", "--ignore-case"], StoreTrue, "Ignore case, default false"); + ap.refer(&mut self.filter_large_line).add_option(&["--filter-large-line"], StoreTrue, "Filter large line"); + ap.refer(&mut self.large_line_size).add_option(&["--large-line-size"], Store, "Large line, default 10KB"); + ap.refer(&mut self.scan_dot_git).add_option(&["--scan-dot-git"], StoreTrue, "Scan dot git"); + ap.refer(&mut self.skip_link_dir).add_option(&["--skip-link-dir"], StoreTrue, "Skip link dir"); + ap.refer(&mut self.version).add_option(&["-v", "--version"], StoreTrue, "Print version"); + ap.refer(&mut self.verbose).add_option(&["--verbose"], StoreTrue, "Verbose"); + ap.refer(&mut self.search_text).add_argument("SEARCH TEXT", Store, "Search text"); + ap.parse_args_or_exit(); + } + + self.parsed_huge_file_size = parse_size(&self.huge_file_size)? as u64; + self.parsed_large_text_file_size = parse_size(&self.large_text_file_size)? as u64; + self.parsed_large_line_size = parse_size(&self.large_line_size)? as u64; + Ok(()) } } \ No newline at end of file