use anyhow::{Context, Result};
use salah_cli::cli;
use salah_cli::times;
#[tokio::main]
async fn main() -> Result<()> {
let opts = cli::parse()
.await
.with_context(|| "Failed to parse CLI arguments")?;
match opts {
cli::ParsedOptions::Calculation {
date,
timezone,
lat,
lng,
timings,
auth,
school,
format,
} => {
let pt = times::PrayerTimes::new(lat, lng)
.with_date(&date)
.with_timezone(&timezone)
.with_authority(&auth)
.with_school(&school);
for timing in &timings {
println!(
"{} {}",
timing.to_str(),
pt.timing(timing).format(format.as_str())
);
}
}
cli::ParsedOptions::Timings => cli::display_timings(),
cli::ParsedOptions::Authority => cli::display_authority(),
cli::ParsedOptions::Timezones { query } => cli::display_timezones(&query),
}
return Ok(());
}