aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/clean.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-06-02 15:50:30 +0900
committerOphestra <cat@gensokyo.uk>2026-06-02 15:50:30 +0900
commit6c2f7089b65c5e3eb5c3e65210abc0147f97ff45 (patch)
tree6270391fff9f554eb2fb6f0178ce3c0c8384577a /internal/pkg/clean.go
parent74c18390b4d0e33f960622fa158be09f46491eb7 (diff)
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 <cat@gensokyo.uk>
Diffstat (limited to 'internal/pkg/clean.go')
-rw-r--r--internal/pkg/clean.go14
1 files changed, 14 insertions, 0 deletions
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
@@ -81,6 +81,13 @@ func (c *Cache) Clean(dry, inputs bool, keep ...Artifact) (
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,
).String()); err != nil {
@@ -126,6 +133,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,
).String()); err != nil {