From e08b9a3b8a1e95db190dc26e35f5d7e5debb38d4 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 18 Sep 2018 00:25:58 -0600 Subject: [PATCH] v0.1.2: move main fns to lib --- src/lib.rs | 37 +++++++++++++++++++++++++++++++++++-- src/main.rs | 41 ++--------------------------------------- 2 files changed, 37 insertions(+), 41 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index fedc5ca..be28858 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,36 @@ -pub fn run() { - println!("hello") +use std::fs::File; +use std::io::prelude::*; +use std::error::Error; + +pub struct Config { + query: String, + filename: String, +} + +pub fn run(conf: Config) -> Result<(), Box> { + println!("{:?} {:?}", conf.query, conf.filename); + + let mut f = File::open(&conf.filename)?; + + let mut contents = String::new(); + f.read_to_string(&mut contents)?; + + println!("Searching for '{}'", conf.query); + println!("In file '{}'", conf.filename); + println!("With text:\n{}", contents); + + Ok(()) +} + +impl Config { + pub fn new(args: &[String]) -> Result { + if args.len() < 3 { + return Err("too few arguments") + } + + Ok(Config { + query: args[1].clone(), + filename: args[2].clone(), + }) + } } diff --git a/src/main.rs b/src/main.rs index b56adf4..8c2ac1f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,26 +1,18 @@ extern crate grep; use std::env; -use std::fs::File; -use std::io::prelude::*; use std::process; -use std::error::Error; - -struct Config { - query: String, - filename: String, -} fn main() { let args: Vec = env::args().collect(); - let conf = Config::new(&args).unwrap_or_else(|err| { + let conf = grep::Config::new(&args).unwrap_or_else(|err| { println!("Problem parsing arguments: {}", err); process::exit(1); }); //let filename = &conf.filename.clone(); - if let Err(e) = run(conf) { + if let Err(e) = grep::run(conf) { println!("Big bad bada boom!\n{:?}", e); //println!("Big bad bada boom!\n{:?}", e.kind()); //println!("Big bad bada boom!\n{}", e.description()); @@ -28,32 +20,3 @@ fn main() { process::exit(1); } } - -//fn run(conf: Config) -> Result<(), Box> -fn run(conf: Config) -> Result<(), Box> { - println!("{:?} {:?}", conf.query, conf.filename); - - let mut f = File::open(&conf.filename)?; - - let mut contents = String::new(); - f.read_to_string(&mut contents)?; - - println!("Searching for '{}'", conf.query); - println!("In file '{}'", conf.filename); - println!("With text:\n{}", contents); - - Ok(()) -} - -impl Config { - fn new(args: &[String]) -> Result { - if args.len() < 3 { - return Err("too few arguments") - } - - Ok(Config { - query: args[1].clone(), - filename: args[2].clone(), - }) - } -}