aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2021-05-22 19:46:06 +0200
committerTeddy Wing2021-05-22 19:46:06 +0200
commit5562492d935d55e5e707cae4a80002733c54eb5c (patch)
tree798d787de246f6d249311b96bcd281d48cc1e35b
parentf44e89af155c17ee165271a8c55c5ea9246ce56c (diff)
downloadgoogle-calendar-rsvp-5562492d935d55e5e707cae4a80002733c54eb5c.tar.bz2
print_event(): Return a `Result`
-rw-r--r--Cargo.lock7
-rw-r--r--Cargo.toml1
-rw-r--r--src/main.rs24
3 files changed, 27 insertions, 5 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 2868dab..b222a17 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -10,6 +10,12 @@ dependencies = [
]
[[package]]
+name = "anyhow"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b"
+
+[[package]]
name = "autocfg"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -250,6 +256,7 @@ dependencies = [
name = "google-calendar-rsvp"
version = "0.0.1"
dependencies = [
+ "anyhow",
"base64 0.13.0",
"chrono",
"exitcode",
diff --git a/Cargo.toml b/Cargo.toml
index 0ab994b..6e17021 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.0.1"
edition = "2018"
[dependencies]
+anyhow = "1.0.40"
base64 = "0.13.0"
chrono = "0.4.19"
exitcode = "1.1.2"
diff --git a/src/main.rs b/src/main.rs
index 83f41d9..1a8316d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,3 +1,4 @@
+use anyhow;
use base64;
use chrono::DateTime;
use google_calendar3::api::{Event, EventAttendee};
@@ -37,7 +38,18 @@ impl fmt::Display for EventResponseStatus {
#[tokio::main]
-async fn main() -> Result<(), Box<dyn std::error::Error>> {
+async fn main() {
+ match run().await {
+ Ok(_) => (),
+ Err(e) => {
+ eprintln!("error: {}", e);
+
+ process::exit(exitcode::SOFTWARE);
+ },
+ }
+}
+
+async fn run() -> Result<(), Box<dyn std::error::Error>> {
let args: Vec<String> = env::args().collect();
let mut action_opt: Option<EventResponseStatus> = None;
@@ -101,7 +113,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
).await;
if is_verbose {
- print_event(&event);
+ print_event(&event)?;
}
}
@@ -211,7 +223,7 @@ fn eid_from_email(email: &[u8]) -> String {
todo!();
}
-fn print_event(event: &Event) {
+fn print_event(event: &Event) -> anyhow::Result<()> {
if let Some(summary) = &event.summary {
println!("{}", summary);
println!();
@@ -223,12 +235,12 @@ fn print_event(event: &Event) {
if let Some(start) = &event.start {
if let Some(date_time) = &start.date_time {
- let start_time = DateTime::parse_from_rfc3339(&date_time).unwrap();
+ let start_time = DateTime::parse_from_rfc3339(&date_time)?;
print!("When {}", start_time.format("%a %b %e, %Y %H:%M"));
if let Some(end) = &event.end {
if let Some(date_time) = &end.date_time {
- let end_time = DateTime::parse_from_rfc3339(&date_time).unwrap();
+ let end_time = DateTime::parse_from_rfc3339(&date_time)?;
print!(" – {}", end_time.format("%H:%M"));
}
}
@@ -278,6 +290,8 @@ fn print_event(event: &Event) {
}
}
}
+
+ Ok(())
}