diff options
author | Jesse Luehrs <doy@tozt.net> | 2020-04-12 01:29:14 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2020-04-12 01:37:35 -0400 |
commit | 14b647f9d6dbb76960e6cad6f51531ea6a8dbf3a (patch) | |
tree | a9d1c38e7c03f1cb8d1309a4623c46d636366367 /src/bin/rbw/actions.rs | |
parent | 236f06736e45c2a70f43589c9d447a0a3ef240b5 (diff) | |
download | rbw-14b647f9d6dbb76960e6cad6f51531ea6a8dbf3a.tar.gz rbw-14b647f9d6dbb76960e6cad6f51531ea6a8dbf3a.zip |
avoid throwing errors for things we don't care about
Diffstat (limited to 'src/bin/rbw/actions.rs')
-rw-r--r-- | src/bin/rbw/actions.rs | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/bin/rbw/actions.rs b/src/bin/rbw/actions.rs index 0844696..87ecbc8 100644 --- a/src/bin/rbw/actions.rs +++ b/src/bin/rbw/actions.rs @@ -1,3 +1,5 @@ +use anyhow::Context as _; + pub fn login() -> anyhow::Result<()> { simple_action(rbw::agent::Action::Login, "login") } @@ -15,16 +17,27 @@ pub fn lock() -> anyhow::Result<()> { } pub fn quit() -> anyhow::Result<()> { - let mut sock = crate::sock::Sock::connect()?; - sock.send(&rbw::agent::Request { - tty: std::env::var("TTY").ok(), - action: rbw::agent::Action::Quit, - })?; - Ok(()) + match crate::sock::Sock::connect() { + Ok(mut sock) => { + sock.send(&rbw::agent::Request { + tty: std::env::var("TTY").ok(), + action: rbw::agent::Action::Quit, + })?; + Ok(()) + } + Err(e) => { + if e.kind() == std::io::ErrorKind::ConnectionRefused { + Ok(()) + } else { + Err(e.into()) + } + } + } } pub fn decrypt(cipherstring: &str) -> anyhow::Result<String> { - let mut sock = crate::sock::Sock::connect()?; + let mut sock = crate::sock::Sock::connect() + .context("failed to connect to rbw-agent")?; sock.send(&rbw::agent::Request { tty: std::env::var("TTY").ok(), action: rbw::agent::Action::Decrypt { @@ -46,7 +59,8 @@ fn simple_action( action: rbw::agent::Action, desc: &str, ) -> anyhow::Result<()> { - let mut sock = crate::sock::Sock::connect()?; + let mut sock = crate::sock::Sock::connect() + .context("failed to connect to rbw-agent")?; sock.send(&rbw::agent::Request { tty: std::env::var("TTY").ok(), |