diff options
author | Jesse Luehrs <doy@tozt.net> | 2020-04-11 00:28:24 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2020-04-11 00:28:24 -0400 |
commit | b02edb523711f5f05b5a31eae9f6adda0d177359 (patch) | |
tree | da04794e044415ed6d2c676c21116774538864c8 | |
parent | 8f7b423b7e854e37fae02de65c48768d48e24d0b (diff) | |
download | rbw-b02edb523711f5f05b5a31eae9f6adda0d177359.tar.gz rbw-b02edb523711f5f05b5a31eae9f6adda0d177359.zip |
implement purge
-rw-r--r-- | src/bin/rbw.rs | 5 | ||||
-rw-r--r-- | src/db.rs | 6 | ||||
-rw-r--r-- | src/error.rs | 3 |
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() { @@ -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 }, |