From 7665b84f74ea9bc8b24dfe5e83d5dee29042a870 Mon Sep 17 00:00:00 2001 From: aawsome <37850842+aawsome@users.noreply.github.com> Date: Tue, 7 May 2024 10:16:50 +0200 Subject: [PATCH] fix: Respect delete-protection when running forget with ids (#1149) closes #1148 --- src/commands/forget.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/commands/forget.rs b/src/commands/forget.rs index 395426329..531a1a8f0 100644 --- a/src/commands/forget.rs +++ b/src/commands/forget.rs @@ -9,6 +9,7 @@ use abscissa_core::{config::Override, Shutdown}; use abscissa_core::{Command, FrameworkError, Runnable}; use anyhow::Result; +use chrono::Local; use merge::Merge; use serde::{Deserialize, Serialize}; use serde_with::{serde_as, DisplayFromStr}; @@ -108,15 +109,26 @@ impl ForgetCmd { config.forget.filter.matches(sn) })? } else { + let now = Local::now(); let item = ForgetGroup { group: SnapshotGroup::default(), snapshots: repo .get_snapshots(&self.ids)? .into_iter() - .map(|sn| ForgetSnapshot { - snapshot: sn, - keep: false, - reasons: vec!["id argument".to_string()], + .map(|sn| { + if sn.must_keep(now) { + ForgetSnapshot { + snapshot: sn, + keep: true, + reasons: vec!["snapshot".to_string()], + } + } else { + ForgetSnapshot { + snapshot: sn, + keep: false, + reasons: vec!["id argument".to_string()], + } + } }) .collect(), };