mod app;
mod index;
mod ui;
mod utils;
use anyhow::Result;
use clap::Parser;
use crate::app::App;
#[derive(Parser)]
#[command(version, about)]
struct Cli {
#[arg(long)]
print: bool,
#[arg(long)]
reindex: bool,
#[arg(long)]
verify: bool,
}
fn main() -> Result<()> {
let cli = Cli::parse();
if cli.verify {
return utils::verify_index();
}
let indexer = index::Indexer::start(cli.reindex);
let sessions = if cli.reindex { vec![] } else { index::cached_sessions()? };
let mut app = App::new(sessions, indexer);
match ui::run(&mut app)? {
Some(session) if cli.print => println!("{}", session.id),
Some(session) => utils::resume(&session)?,
None => {}
}
return Ok(());
}