aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/rbw/actions.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-04-12 01:29:14 -0400
committerJesse Luehrs <doy@tozt.net>2020-04-12 01:37:35 -0400
commit14b647f9d6dbb76960e6cad6f51531ea6a8dbf3a (patch)
treea9d1c38e7c03f1cb8d1309a4623c46d636366367 /src/bin/rbw/actions.rs
parent236f06736e45c2a70f43589c9d447a0a3ef240b5 (diff)
downloadrbw-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.rs30
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(),