// This is a simple example package main import ( "fmt" "os/user" "time" "go.wit.com/log" "go.wit.com/lib/gui/repostatus" ) func (r *repo) newScan() bool { if r.status == nil { log.Warn("repo.status = nil. not initialized for some reason") return false } // r.scan() if repostatus.VerifyLocalGoRepo(r.getPath()) { log.Verbose("repo actually exists", r.getPath()) } else { log.Warn("repo does not exist", r.getPath()) return false } mname := r.status.GetMasterBranchName() mver := r.status.GetMasterVersion() if mname != "guimaster" { mver = mver + " (" + mname + ")" } r.masterVersion.SetLabel(mver) dname := r.status.GetDevelBranchName() dver := r.status.GetDevelVersion() if dname != "devel" { dver = dver + " (" + dname + ")" } r.develVersion.SetLabel(dver) uname := r.status.GetUserBranchName() uver := r.status.GetUserVersion() usr, _ := user.Current() if uname != usr.Username { uver = uver + " (" + uname + ")" } r.userVersion.SetLabel(uver) cbname := r.status.GetCurrentBranchName() cbversion := r.status.GetCurrentBranchVersion() lasttag := r.status.GetLastTagVersion() r.lastTag.SetLabel(lasttag) r.vLabel.SetLabel(cbname + " " + cbversion) if r.status.Changed() { log.Warn("should scan here") } status := r.status.GetStatus() r.dirtyLabel.SetLabel(status) if status == "PERFECT" { if me.autoHidePerfect.Checked() { r.Hide() } return true } return false } func (r *repo) getGoSumStatus() string { return r.goSumStatus.String() } func (r *repo) setGoSumStatus(s string) { r.goSumStatus.SetLabel(s) r.status.SetGoSumStatus(s) } func (r *repo) checkDirty() bool { if r.status.CheckDirty() { log.Info("dirty repo:", r.status.String(), r.getGoSumStatus()) r.setGoSumStatus("DIRTY") return true } return false } func (r *repo) checkSafeGoSumRemake() { if ok, bad := r.status.CheckSafeGoSumRemake(); ok { log.Info("checkSafeGoSumRemake() is safe to redo") r.setGoSumStatus("SAFE") r.status.MakeRedomod() } else { log.Info("checkSafeGoSumRemake() is not safe. problems:", bad) r.setGoSumStatus("BAD DEP") } } func scanGoSum() { for _, repo := range me.allrepos { latestversion := repo.status.GetLastTagVersion() if repo.getGoSumStatus() == "BAD" { continue } if repo.getGoSumStatus() == "DIRTY" { continue } if repo.status.CheckPrimativeGoMod() { log.Info("PRIMATIVE repo:", latestversion, repo.status.String()) repo.setGoSumStatus("PRIMATIVE") continue } if repo.checkDirty() { log.Info("dirty repo:", latestversion, repo.status.String()) log.Info("dirty repo.getGoSumStatus =", repo.getGoSumStatus()) repo.setGoSumStatus("DIRTY") // release.repo.SetValue(repo.status.String()) // release.status.SetValue("dirty") // release.notes.SetValue("You must commit your changes\nbefore you can continue") // release.current = repo // release.openrepo.Enable() continue } if ok, missing := repo.status.CheckGoSum(); ok { log.Info("repo has go.sum requirements that are clean") repo.setGoSumStatus("CLEAN") } else { log.Info("repo has go.sum requirements that are screwed up. missing:", missing) repo.setGoSumStatus("BAD") // release.repo.SetValue(repo.status.String()) // release.status.SetValue("bad") // release.notes.SetValue("the go.sum file is wrong") // release.current = repo // release.openrepo.Enable() continue } status := repo.dirtyLabel.String() if status == "PERFECT" { continue } else { repo.status.Update() repo.newScan() } log.Info("repo:", latestversion, status, repo.status.String()) } log.Info("scanGoSum() did everything, not sure what to do next") } // 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() } } }