diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/main.rs b/src/main.rs index 8cb8466..9a18e7e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +#![feature(thread_id_value)] pub mod vector; pub mod dictionary; pub mod text; @@ -12,6 +13,7 @@ pub mod gui; use index::Index; use std::io::*; use std::env; +use crate::index::GenState; fn main() { let args: Vec<_> = env::args().collect(); @@ -27,8 +29,13 @@ fn main() { let input = args.get(2).unwrap(); let file = args.get(3).unwrap(); - let _ = Index::generate(input, |counter, nof| { - eprint!("\r\x1b[2K{} of {} files indexed ({}%)", counter, nof, (counter * 100) / nof); + let _ = Index::generate(input, |t, p| { + eprint!("\r\x1b[2K{}% ", p); + match t { + GenState::Fetching => { eprint!("fetched") } + GenState::Parsing => { eprint!("parsed") } + GenState::Merging => { eprint!("merged") } + }; std::io::stdout().flush().ok(); }).save(file.to_string()); } else if cmd == "-s" { @@ -48,18 +55,19 @@ fn main() { println!("{}", result.path); } } else if cmd == "-m" { - if args.len() != 5 { - eprintln!("{} -m <index1> <index2> <merged index>", args.get(0).unwrap()); + if args.len() < 5 { + eprintln!("{} -m <output> index...", args.get(0).unwrap()); return; } - let index1 = args.get(2).unwrap().clone(); - let index2 = args.get(3).unwrap().clone(); - let merged = args.get(4).unwrap().clone(); - let _ = Index::merge( - Index::from_file(index1), - Index::from_file(index2) - ).save(merged); + let merged = args.get(2).unwrap().clone(); + let v : Vec<String> = args.get(3..(args.len())).unwrap().into(); + let indexes = v.iter().map(|s| Index::from_file(s.clone())).collect(); + let _ = Index::merge(indexes, + |p| { + eprint!("\r\x1b[2K{}% merged", p); + } + ).save(merged); } } else { let _ = gui::run(); |