aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-04-11 00:28:24 -0400
committerJesse Luehrs <doy@tozt.net>2020-04-11 00:28:24 -0400
commitb02edb523711f5f05b5a31eae9f6adda0d177359 (patch)
treeda04794e044415ed6d2c676c21116774538864c8
parent8f7b423b7e854e37fae02de65c48768d48e24d0b (diff)
downloadrbw-b02edb523711f5f05b5a31eae9f6adda0d177359.tar.gz
rbw-b02edb523711f5f05b5a31eae9f6adda0d177359.zip
implement purge
-rw-r--r--src/bin/rbw.rs5
-rw-r--r--src/db.rs6
-rw-r--r--src/error.rs3
3 files changed, 13 insertions, 1 deletions
diff --git a/src/bin/rbw.rs b/src/bin/rbw.rs
index 84084ff..9578266 100644
--- a/src/bin/rbw.rs
+++ b/src/bin/rbw.rs
@@ -183,7 +183,10 @@ fn lock() {
}
fn purge() {
- todo!()
+ stop_agent();
+
+ let email = config_email();
+ rbw::db::Db::remove(&email).unwrap();
}
fn stop_agent() {
diff --git a/src/db.rs b/src/db.rs
index 5fa7856..9d76d7a 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -77,6 +77,12 @@ impl Db {
Ok(())
}
+ pub fn remove(email: &str) -> Result<()> {
+ let filename = Self::filename(email);
+ std::fs::remove_file(filename).context(crate::error::RemoveDb)?;
+ Ok(())
+ }
+
fn filename(email: &str) -> std::path::PathBuf {
crate::dirs::cache_dir().join(format!("{}.json", email))
}
diff --git a/src/error.rs b/src/error.rs
index de46847..d3e168b 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -63,6 +63,9 @@ pub enum Error {
#[snafu(display("error waiting for pinentry to exit: {}", source))]
PinentryWait { source: tokio::io::Error },
+ #[snafu(display("failed to remove db: {}", source))]
+ RemoveDb { source: std::io::Error },
+
#[snafu(display("error making api request: {}", source))]
Reqwest { source: reqwest::Error },