package repostatus import ( "fmt" "time" "errors" "go.wit.com/log" ) func (rs *RepoStatus) Update() { if ! rs.Ready() { log.Log(WARN, "can't update yet. ready is false") log.Error(errors.New("Update() is not ready yet")) return } log.Log(WARN, "Update() START") duration := timeFunction(func () { // do things that are safe even if the git tree is dirty log.Warn("path.Set()") rs.path.Set(rs.repopath) log.Warn("getCurrentBranchName()") rs.getCurrentBranchName() log.Warn("set window Title()") rs.window.Title(rs.repopath + " GO repo Details") log.Warn("getCurrentBranchVersion()") rs.getCurrentBranchVersion() log.Warn("getLastTagVersion()") rs.getLastTagVersion() log.Warn("populateTags()") rs.populateTags() log.Warn("CheckDirty()") rs.CheckDirty() if rs.dirtyLabel.Get() != "no" { log.Warn("dirty label != no. actual value:", rs.dirtyLabel.Get()) rs.DisableEverything() return } master := rs.masterDrop.Get() devel := rs.develDrop.Get() user := rs.userDrop.Get() // rs.CheckDirty() this runs log.Log(WARN, "") log.Log(WARN, "checkoutBranch", master) rs.checkoutBranch("master", master) log.Log(WARN, "") log.Log(WARN, "checkoutBranch", devel) rs.checkoutBranch("devel", devel) log.Log(WARN, "") log.Log(WARN, "checkoutBranch", user) rs.checkoutBranch("user", user) rs.recommend() }) rs.setSpeed(duration) log.Log(WARN, "Update() END") } func (rs *RepoStatus) setSpeed(duration time.Duration) { s := fmt.Sprint(duration) if rs.speedActual == nil { log.Log(WARN, "can't actually warn") return } rs.speedActual.Set(s) if (duration > 500 * time.Millisecond ) { rs.speed.Set("SLOW") } else if (duration > 100 * time.Millisecond ) { rs.speed.Set("OK") } else { rs.speed.Set("FAST") } } // disable all things besides Update() button func (rs *RepoStatus) DisableEverything() { log.Warn("DisableEverything()") // choosing a major, minor or revision rs.major.Disable() rs.minor.Disable() rs.revision.Disable() // disable adding a tag message rs.versionMessage.Disable() // disable the merge devel to master button rs.develMerge.Disable() // disable the tag a new version button rs.releaseVersion.Disable() } // this means devel needs to be merged to master func (rs *RepoStatus) EnableMergeDevel() { rs.DisableEverything() rs.develMerge.Enable() } // this means you need to release a new version of the master repository func (rs *RepoStatus) EnableSelectTag() { rs.DisableEverything() // choosing a major, minor or revision rs.major.Enable() rs.minor.Enable() rs.revision.Enable() // disable adding a tag message rs.versionMessage.Enable() // force there to be a commit message rs.releaseVersion.Disable() }