aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 },