aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/rbw/actions.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-04-12 00:08:03 -0400
committerJesse Luehrs <doy@tozt.net>2020-04-12 00:08:03 -0400
commit236f06736e45c2a70f43589c9d447a0a3ef240b5 (patch)
treec390d4cbfec5223ac1aefe3947f8e1bb885757d2 /src/bin/rbw/actions.rs
parent91d1d1890bdc3ee75b69e00d5368c5b29a4f461c (diff)
downloadrbw-236f06736e45c2a70f43589c9d447a0a3ef240b5.tar.gz
rbw-236f06736e45c2a70f43589c9d447a0a3ef240b5.zip
improve error handling and reporting
Diffstat (limited to 'src/bin/rbw/actions.rs')
-rw-r--r--src/bin/rbw/actions.rs54
1 files changed, 29 insertions, 25 deletions
diff --git a/src/bin/rbw/actions.rs b/src/bin/rbw/actions.rs
index cca2cf1..0844696 100644
--- a/src/bin/rbw/actions.rs
+++ b/src/bin/rbw/actions.rs
@@ -1,60 +1,64 @@
-pub fn login() {
- simple_action(rbw::agent::Action::Login, "login");
+pub fn login() -> anyhow::Result<()> {
+ simple_action(rbw::agent::Action::Login, "login")
}
-pub fn unlock() {
- simple_action(rbw::agent::Action::Unlock, "unlock");
+pub fn unlock() -> anyhow::Result<()> {
+ simple_action(rbw::agent::Action::Unlock, "unlock")
}
-pub fn sync() {
- simple_action(rbw::agent::Action::Sync, "sync");
+pub fn sync() -> anyhow::Result<()> {
+ simple_action(rbw::agent::Action::Sync, "sync")
}
-pub fn lock() {
- simple_action(rbw::agent::Action::Lock, "lock");
+pub fn lock() -> anyhow::Result<()> {
+ simple_action(rbw::agent::Action::Lock, "lock")
}
-pub fn quit() {
- let mut sock = crate::sock::Sock::connect();
+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(())
}
-pub fn decrypt(cipherstring: &str) -> String {
- let mut sock = crate::sock::Sock::connect();
+pub fn decrypt(cipherstring: &str) -> anyhow::Result<String> {
+ let mut sock = crate::sock::Sock::connect()?;
sock.send(&rbw::agent::Request {
tty: std::env::var("TTY").ok(),
action: rbw::agent::Action::Decrypt {
cipherstring: cipherstring.to_string(),
},
- });
+ })?;
- let res = sock.recv();
+ let res = sock.recv()?;
match res {
- rbw::agent::Response::Decrypt { plaintext } => plaintext,
+ rbw::agent::Response::Decrypt { plaintext } => Ok(plaintext),
rbw::agent::Response::Error { error } => {
- panic!("failed to decrypt: {}", error)
+ Err(anyhow::anyhow!("failed to decrypt: {}", error))
}
- _ => panic!("unexpected message: {:?}", res),
+ _ => Err(anyhow::anyhow!("unexpected message: {:?}", res)),
}
}
-fn simple_action(action: rbw::agent::Action, desc: &str) {
- let mut sock = crate::sock::Sock::connect();
+fn simple_action(
+ action: rbw::agent::Action,
+ desc: &str,
+) -> anyhow::Result<()> {
+ let mut sock = crate::sock::Sock::connect()?;
sock.send(&rbw::agent::Request {
tty: std::env::var("TTY").ok(),
action,
- });
+ })?;
- let res = sock.recv();
+ let res = sock.recv()?;
match res {
- rbw::agent::Response::Ack => (),
+ rbw::agent::Response::Ack => Ok(()),
rbw::agent::Response::Error { error } => {
- panic!("failed to {}: {}", desc, error)
+ Err(anyhow::anyhow!("failed to {}: {}", desc, error))
}
- _ => panic!("unexpected message: {:?}", res),
+ _ => Err(anyhow::anyhow!("unexpected message: {:?}", res)),
}
}