Skip to content

Commit 6900b9b

Browse files
committed
Use os.DirFS + fs.WalkDir in listTempFiles to confine listing to .entire/tmp/
Replaces os.ReadDir with os.DirFS + fs.WalkDir so directory listing is scoped to the temp directory, consistent with deleteTempFiles. Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Entire-Checkpoint: fd7de86795d7
1 parent ae74042 commit 6900b9b

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

cmd/entire/cli/clean.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"errors"
66
"fmt"
77
"io"
8+
"io/fs"
89
"os"
910
"strings"
1011

@@ -425,19 +426,9 @@ func runCleanAllWithItems(ctx context.Context, w io.Writer, force, dryRun bool,
425426

426427
// listTempFiles returns files in .entire/tmp/ that are safe to delete,
427428
// excluding files belonging to active sessions.
429+
// Uses os.DirFS + fs.WalkDir to confine listing to the temp directory.
428430
func listTempFiles(ctx context.Context) ([]string, error) {
429-
tmpDir, err := paths.AbsPath(ctx, paths.EntireTmpDir)
430-
if err != nil {
431-
return nil, fmt.Errorf("failed to get temp dir path: %w", err)
432-
}
433-
434-
entries, err := os.ReadDir(tmpDir)
435-
if os.IsNotExist(err) {
436-
return nil, nil
437-
}
438-
if err != nil {
439-
return nil, fmt.Errorf("failed to read temp dir: %w", err)
440-
}
431+
fsys := os.DirFS(paths.EntireTmpDir)
441432

442433
// Build set of active session IDs to protect their temp files
443434
activeSessionIDs := make(map[string]bool)
@@ -448,17 +439,27 @@ func listTempFiles(ctx context.Context) ([]string, error) {
448439
}
449440

450441
var files []string
451-
for _, entry := range entries {
452-
if entry.IsDir() {
453-
continue
442+
err := fs.WalkDir(fsys, ".", func(_ string, d fs.DirEntry, err error) error {
443+
if err != nil {
444+
return err
445+
}
446+
if d.IsDir() {
447+
return nil
454448
}
455449
// Skip temp files belonging to active sessions (e.g., "session-id.json")
456-
name := entry.Name()
450+
name := d.Name()
457451
sessionID := strings.TrimSuffix(name, ".json")
458452
if sessionID != name && activeSessionIDs[sessionID] {
459-
continue
453+
return nil
460454
}
461455
files = append(files, name)
456+
return nil
457+
})
458+
if os.IsNotExist(err) {
459+
return nil, nil
460+
}
461+
if err != nil {
462+
return nil, fmt.Errorf("failed to list temp dir: %w", err)
462463
}
463464
return files, nil
464465
}

0 commit comments

Comments
 (0)