aboutsummaryrefslogtreecommitdiff
path: root/internal/plan/chain.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/plan/chain.go')
-rw-r--r--internal/plan/chain.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/internal/plan/chain.go b/internal/plan/chain.go
index bfa2484..e504504 100644
--- a/internal/plan/chain.go
+++ b/internal/plan/chain.go
@@ -32,6 +32,10 @@ func NewClaims() *Claims {
type Input struct {
File scan.File
Rules []RuleMatch
+ // NoDelete, when non-empty, skips every delete step of this file with
+ // this text as the step's Skip, without ending the chain (spec §5.5
+ // rule 2, §7.1).
+ NoDelete string
}
// Build turns each file's matching rules into a chain. root is the
@@ -166,6 +170,10 @@ func buildOne(root string, in Input, now time.Time, d Disk, claim claimed) Chain
}
case config.Delete, config.DeletePermanent:
+ if in.NoDelete != "" {
+ step.Skip = in.NoDelete
+ break
+ }
deletedBy = rule.Name
}