mod cli; mod db; mod gui; mod model; mod validation; use anyhow::Result; use clap::Parser; #[derive(Parser)] #[clap()] struct Opt { /// Path of SQLite database in which to store events #[clap(long = "database", default_value = "database.sqlite3")] db_path: String, /// Started at events as plain text #[clap(long = "date")] date: Option, /// Started between events as plain text #[clap(long = "start-between")] start_between: Option, } fn main() -> Result<()> { let Opt { db_path, date, start_between, } = Opt::parse(); let conn = db::init(&db_path)?; match date.and_then(cli::parse_date) { Some(date) => print!("{}", cli::started_at_date(&conn, date)?), None => match start_between.and_then(cli::parse_timestamp_range) { Some((from, to)) => print!("{}", cli::start_between(&conn, from, to)?), None => gui::run(conn), }, }; Ok(()) }