From 6c2f7089b65c5e3eb5c3e65210abc0147f97ff45 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 2 Jun 2026 15:50:30 +0900 Subject: internal/pkg: destroy unreachable status entries These must be destroyed alongside their corresponding identifier or substitute entries to avoid inconsistent state. Signed-off-by: Ophestra --- internal/pkg/clean.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'internal/pkg/clean.go') diff --git a/internal/pkg/clean.go b/internal/pkg/clean.go index addcd32d..efeb40de 100644 --- a/internal/pkg/clean.go +++ b/internal/pkg/clean.go @@ -80,6 +80,13 @@ func (c *Cache) Clean(dry, inputs bool, keep ...Artifact) ( destroyedIdents := make([]unique.Handle[ID], 0, len(idents)) for _, pair := range idents { if !dry { + if err = os.Remove(c.base.Append( + dirStatus, + pair.name, + ).String()); err != nil && !errors.Is(err, os.ErrNotExist) { + return destroyedIdents, nil, err + } + if err = os.Remove(c.base.Append( dirIdentifier, pair.name, @@ -125,6 +132,13 @@ func (c *Cache) Clean(dry, inputs bool, keep ...Artifact) ( c.msg.Verbosef("destroying substitute %s...", name) if !dry { + if err = os.Remove(c.base.Append( + dirStatus, + name, + ).String()); err != nil && !errors.Is(err, os.ErrNotExist) { + return destroyedIdents, nil, err + } + if err = os.Remove(c.base.Append( dirSubstitute, name, -- cgit v1.3.1