MCPcopy Create free account
hub / github.com/diillson/chatcli / Cleanup

Method Cleanup

cli/workspace/memory/daily.go:82–120  ·  view source on GitHub ↗

Cleanup deletes daily notes older than retentionDays. Returns the number of files deleted.

(retentionDays int)

Source from the content-addressed store, hash-verified

80// Cleanup deletes daily notes older than retentionDays.
81// Returns the number of files deleted.
82func (d *DailyNoteStore) Cleanup(retentionDays int) (int, error) {
83 cutoff := time.Now().AddDate(0, 0, -retentionDays)
84 deleted := 0
85
86 err := filepath.Walk(d.memoryDir, func(path string, info os.FileInfo, err error) error {
87 if err != nil {
88 return nil // skip unreadable entries
89 }
90 if info.IsDir() {
91 return nil
92 }
93 if !strings.HasSuffix(info.Name(), ".md") || info.Name() == "MEMORY.md" {
94 return nil
95 }
96
97 // Parse date from filename (YYYYMMDD.md)
98 name := strings.TrimSuffix(info.Name(), ".md")
99 noteDate, parseErr := time.Parse("20060102", name)
100 if parseErr != nil {
101 return nil // not a date-formatted file, skip
102 }
103
104 if noteDate.Before(cutoff) {
105 if rmErr := os.Remove(filepath.Clean(path)); rmErr != nil { //#nosec G122 -- path from filepath.Walk under memory dir, name validated above
106 d.logger.Warn("failed to delete old daily note",
107 zap.String("path", path), zap.Error(rmErr))
108 } else {
109 deleted++
110 d.logger.Debug("deleted old daily note", zap.String("path", path))
111 }
112 }
113 return nil
114 })
115
116 // Cleanup empty month directories
117 d.cleanEmptyDirs()
118
119 return deleted, err
120}
121
122// cleanEmptyDirs removes empty YYYYMM directories.
123func (d *DailyNoteStore) cleanEmptyDirs() {

Calls 6

cleanEmptyDirsMethod · 0.95
WarnMethod · 0.80
NameMethod · 0.65
RemoveMethod · 0.65
ErrorMethod · 0.65
StringMethod · 0.45