forge/doDirty.go

51 lines
1.1 KiB
Go

package main
import (
"time"
"go.wit.com/lib/gui/shell"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
func doDirty() {
findAll() // select all the repos
doCheckDirtyAndConfigSave()
me.found = new(gitpb.Repos)
findDirty()
me.forge.PrintHumanTableDirty(me.found)
}
func straightCheckDirty() int {
var count int
var total int
now := time.Now()
all := me.found.All()
for all.Scan() {
repo := all.Next()
total += 1
if repo.IsDirty() {
count += 1
}
}
log.Printf("rill dirty check (%d dirty repos) (%d total repos) took:%s\n", count, total, shell.FormatDuration(time.Since(now)))
return count
}
func doCheckDirtyAndConfigSave() {
start := straightCheckDirty()
now := time.Now()
// log.Info("before findAll()")
all := me.found.All()
for all.Scan() {
repo := all.Next()
repo.CheckDirty()
}
end := straightCheckDirty()
log.Printf("dirty check (%d dirty repos) (%d total repos) took:%s\n", end, me.found.Len(), shell.FormatDuration(time.Since(now)))
if start != end {
// todo: use internal forgepb configsave flag. should work?
me.forge.ConfigSave()
}
}