aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDom Rodriguez <shymega@users.noreply.github.com>2023-11-16 22:10:46 +0000
committerGitHub <noreply@github.com>2023-11-16 22:10:46 +0000
commitacf6a355fdf9e4edbde491fb375caba5d56302c0 (patch)
treebba48076e54e6b945ec2b1a35d79c98176929c69
parentDisable enter-accept for bash (#1385) (diff)
downloadatuin-acf6a355fdf9e4edbde491fb375caba5d56302c0.zip
fix: Make `atuin account delete` void session + key (#1393)
When I deleted my Atuin.sh account, I found the command did not delete the key or session files. This caused `bail!`s from Atuin when querying the session status, or synchronising. Of course, one shouldn't expect Atuin to be able to synchronise or query with the server when the account is deleted, but the relevant files were still present, so the behaviour was different to what we'd expect. I discussed this with @ellie on Discord, and we came to the conclusion that I should open a PR, and submit a patch. I'm not sure how well this PR fits in with the borrow checker, but I've run tests, a Nix build, and a Cargo build - all goes well. I have not tested on macOS or Windows; only NixOS. Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
-rw-r--r--atuin/src/command/client/account/delete.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/atuin/src/command/client/account/delete.rs b/atuin/src/command/client/account/delete.rs
index 5208a077..6a4b1406 100644
--- a/atuin/src/command/client/account/delete.rs
+++ b/atuin/src/command/client/account/delete.rs
@@ -1,9 +1,11 @@
use atuin_client::{api_client, settings::Settings};
use eyre::{bail, Result};
+use std::fs::remove_file;
use std::path::PathBuf;
pub async fn run(settings: &Settings) -> Result<()> {
let session_path = settings.session_path.as_str();
+ let key_path = settings.key_path.as_str();
if !PathBuf::from(session_path).exists() {
bail!("You are not logged in");
@@ -18,6 +20,15 @@ pub async fn run(settings: &Settings) -> Result<()> {
client.delete().await?;
+ // Fixes stale session+key when account is deleted via CLI.
+ if PathBuf::from(session_path).exists() {
+ remove_file(PathBuf::from(session_path))?;
+ }
+
+ if PathBuf::from(key_path).exists() {
+ remove_file(PathBuf::from(key_path))?;
+ }
+
println!("Your account is deleted");
Ok(())