#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
pub mod vector;
pub mod text;
pub mod splitter;
pub mod filecache;
pub mod searchresult;
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();
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, |p| {
eprint!("\r\x1b[2K{}% searched", p);
});
eprint!("\r\x1b[2K");
for result in results {
println!("{}", result.path);
}
} else if cmd == "-m" {
if args.len() < 5 {
eprintln!("{} -m