diff options
| author | Teddy Wing | 2021-05-21 21:28:18 +0200 |
|---|---|---|
| committer | Teddy Wing | 2021-05-21 21:29:04 +0200 |
| commit | 85ae4e96ff10811148f6b99595b934bce18623d1 (patch) | |
| tree | af83d47b4c079c3ab95feccb0f29db74df404559 | |
| parent | 580a7140ca263d4c8e4f53f52ab601ea51fb4af0 (diff) | |
| download | google-calendar-rsvp-85ae4e96ff10811148f6b99595b934bce18623d1.tar.bz2 | |
Add command line option parsing
| -rw-r--r-- | Cargo.lock | 23 | ||||
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/main.rs | 26 |
3 files changed, 49 insertions, 2 deletions
@@ -88,6 +88,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] +name = "exitcode" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de853764b47027c2e862a995c34978ffa63c1501f2e15f987ba11bd4f9bba193" + +[[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -198,9 +204,20 @@ dependencies = [ ] [[package]] +name = "getopts" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +dependencies = [ + "unicode-width", +] + +[[package]] name = "google-calendar-rsvp" version = "0.0.1" dependencies = [ + "exitcode", + "getopts", "google-calendar3", "home", "hyper", @@ -886,6 +903,12 @@ dependencies = [ ] [[package]] +name = "unicode-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" + +[[package]] name = "unicode-xid" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4,6 +4,8 @@ version = "0.0.1" edition = "2018" [dependencies] +exitcode = "1.1.2" +getopts = "0.2.21" google-calendar3 = "2.0.4+20210327" home = "0.5.3" hyper = "0.14.7" diff --git a/src/main.rs b/src/main.rs index 55cc21b..ae42e82 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,17 +1,39 @@ +use getopts::Options; use google_calendar3::api::{Event, EventAttendee}; -use google_calendar3::{CalendarHub, Result, Error}; +use google_calendar3::CalendarHub; use home; use hyper; use hyper_rustls; use tokio; use yup_oauth2 as oauth2; +use std::env; use std::fs; +use std::process; #[tokio::main] -async fn main() { +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let args: Vec<String> = env::args().collect(); + + let mut opts = Options::new(); + opts.optflag("y", "yes", "accept invitation"); + opts.optflag("n", "no", "decline invitation"); + opts.optflag("m", "maybe", "tentatively accept invitation"); + + opts.optflag("", "email", "read an email from standard input"); + + let opt_matches = opts.parse(&args[1..])?; + + if opt_matches.free.is_empty() { + eprintln!("error: missing event ID argument"); + + process::exit(exitcode::USAGE); + } + rsvp().await; + + Ok(()) } async fn rsvp() { |
