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; use crate::index::GenState; 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, |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" { 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 index...", args.get(0).unwrap()); return; } let merged = args.get(2).unwrap().clone(); let v : Vec = 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(); } }