pub mod vector; pub mod dictionary; pub mod text; pub mod splitter; pub mod filecache; pub mod searchresult; pub mod filecounter; pub mod extractors; pub mod index; pub mod gui; use index::Index; use std::io::*; use std::env; fn main() { let args: Vec<_> = env::args().collect(); if args.len() > 1 { let cmd = args.get(1).unwrap(); if cmd == "-g" { if args.len() != 4 { eprintln!("{} -g ", args.get(0).unwrap()); return; } 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); std::io::stdout().flush().ok(); }).save(file.to_string()); } else if cmd == "-s" { if args.len() < 4 { eprintln!("{} -s ...", args.get(0).unwrap()); return; } let file = args.get(2).unwrap().clone(); let v = args.get(3..(args.len())).unwrap(); let search = v.join(" "); let searchvec = splitter::split_to_words(search); let idx = Index::from_file(file); let results = idx.search(searchvec); for result in results { println!("{}", result.path); } } else if cmd == "-m" { if args.len() != 5 { eprintln!("{} -m ", 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); } } else { let _ = gui::run(); } }