package main import ( "fmt" "strings" "time" "go.wit.com/log" ) func scanRepositories() { var i int = 0 t := timeFunction(func() { for _, repo := range me.allrepos { repo.newScan() i += 1 } }) s := fmt.Sprint(t) log.Info("Scanned", i, "repositories. todo: count/show changes", s) } func (r *repo) newScan() bool { if r.status == nil { log.Warn("repo.status = nil. not initialized for some reason") return false } // first run the repostatus update r.status.UpdateNew() // now read those values and display them in our table // mname := r.status.GetMasterBranchName() // mver := r.status.GetMasterVersion() // mver = mver + " (" + mname + ")" // r.masterVersion.SetLabel(mver) cbname := r.status.GetCurrentBranchName() cbversion := r.status.GetCurrentBranchVersion() lasttag := r.status.GetLastTagVersion() r.lastTag.SetLabel(lasttag) r.vLabel.SetLabel(cbname + " " + cbversion) if c, ok := r.status.Changed(); ok { c := strings.TrimSpace(c) for _, line := range strings.Split(c, "\n") { log.Info(r.status.Path(), line) } } status := r.status.GetStatus() r.dirtyLabel.SetLabel(status) if status == "PERFECT" { if me.autoHidePerfect.Checked() { r.Hide() } return true } return false } // timeFunction takes a function as an argument and returns the execution time. func timeFunction(f func()) time.Duration { startTime := time.Now() // Record the start time f() // Execute the function return time.Since(startTime) // Calculate the elapsed time } func myTicker(t time.Duration, name string, f func()) { ticker := time.NewTicker(t) defer ticker.Stop() done := make(chan bool) /* go func() { time.Sleep(10 * time.Second) done <- true }() */ for { select { case <-done: fmt.Println("Done!") return case t := <-ticker.C: log.Verbose(name, "Current time: ", t) f() } } }