// StartCleaner is a process that periodically checks the status of every issue // that has been previewed and removes all the local files for closed issues. func StartCleaner(workDir string) { glog.Info("Starting Cleaner") c := reitveld.NewClient() for _ = range time.Tick(config.REFRESH) { matches, err := filepath.Glob(workDir + "/patches/*") glog.Infof("Matches: %v", matches) if err != nil { glog.Errorf("Failed to retrieve list of patched checkouts: %s", err) continue } for _, filename := range matches { _, file := filepath.Split(filename) glog.Info(file) m := issueAndPatch.FindStringSubmatch(file) if len(m) < 2 { continue } issue, err := strconv.ParseInt(m[1], 10, 64) if err != nil { glog.Errorf("Failed to parse %q as int: %s", m[1], err) continue } issueInfo, err := c.Issue(issue) if err != nil { glog.Errorf("Failed to retrieve issue status %d: %s", issue, err) } if issueInfo.Closed { if err := os.RemoveAll(filename); err != nil { glog.Errorf("Failed to remove %q: %s", filename, err) } } } } }
"time" "github.com/golang/groupcache/lru" "github.com/skia-dev/glog" "go.skia.org/infra/doc/go/config" "go.skia.org/infra/doc/go/reitveld" "go.skia.org/infra/go/gitinfo" "go.skia.org/infra/go/util" ) const ( MARKDOWN_CACHE_SIZE = 100 ) var ( rc = reitveld.NewClient() ) // DocSet is a single checked out repository of Markdown documents. type DocSet struct { // repoDir is the directory the repo is checked out into. repoDir string // navigation is the HTML formatted navigation structure for the given repo. navigation string cache *lru.Cache mutex sync.Mutex } // newDocSet does the core of the work for both NewDocSet and NewDocSetForIssue.