1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
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,
/// List today’s events as plain text
#[clap(long = "list-today")]
list_today: bool,
/// Start between <timestamp..timestamp> events as plain text
#[clap(long = "start-between")]
start_between: Option<String>,
}
fn main() -> Result<()> {
let Opt {
db_path,
list_today,
start_between,
} = Opt::parse();
let conn = db::init(&db_path)?;
if list_today {
print!("{}", cli::today(&conn)?);
} else {
match start_between.and_then(cli::parse_timestamp_range) {
Some((from, to)) => print!("{}", cli::start_between(&conn, from, to)?),
None => gui::run(conn),
}
};
Ok(())
}
|