package main import ( "os" "path/filepath" "strings" "go.wit.com/log" ) func doClean() { log.Info("find all files") scanTmp() } func scanTmp() { var count int filepath.WalkDir("/tmp", func(path string, d os.DirEntry, err error) error { if err != nil { // Handle possible errors, like permission issues // fmt.Fprintf(os.Stderr, "error accessing path %q: %v\n", path, err) // ignore all these problems return err } /* if d.IsDir() { // log.Info("path is dir", path) return nil } */ _, fname := filepath.Split(path) if !strings.HasPrefix(fname, "regex.") { return nil } if count > 5 { return log.Errorf("count exceeded") } if strings.HasPrefix(fname, "regex.gemini-api-response") { // log.Info("response file:", fname) return nil } if strings.Contains(fname, "gemini-api-request") { // log.Info("response file:", fname) if err := cleanGeminiFile(path); err == nil { count += 1 return nil } else { return nil } } if strings.HasSuffix(fname, ".stats") { cleanStatsFile(path) return nil } log.Info("check file:", path) return nil }) } func cleanStatsFile(fullname string) { log.Info("stats file", fullname) } func cleanGeminiFile(fullname string) error { _, fname := filepath.Split(fullname) if !strings.HasSuffix(fname, ".json") { return log.Errorf("not really gemini-api-request .json") } parts := strings.Split(fname, ".") if len(parts) == 5 { if parts[2] != "gemini-api-request" { return log.Errorf("not really gemini-api-request") } } uuid := parts[1] for _, chat := range me.chats.GetChats() { // log.Info(i, chat.Uuid) if chat.Uuid == uuid { log.Info("found uuid", uuid) return nil } } log.Info("gemini JSON file uuid not found", uuid) return log.Errorf("gemini JSON file uuid %s not found", uuid) }