package repostatus import ( "go.wit.com/log" ) // reports externally if something has changed // since the last time it was asked about it func (rs *RepoStatus) Changed() (string, bool) { if !rs.Ready() { return "", false } return rs.getChanges(), rs.changed } // keeps a human readable list of things that have // changed. todo: timestampe these? func (rs *RepoStatus) getChanges() string { return rs.changes } func (rs *RepoStatus) NoteChange(s string) { rs.changed = true rs.changes += s + "\n" } func (rs *RepoStatus) Show() { if !rs.Ready() { return } log.Log(CHANGE, "Show() window ready =", rs.ready) rs.window.Show() } func (rs *RepoStatus) Hide() { if !rs.Ready() { return } log.Log(CHANGE, "Hide() window ready =", rs.ready) rs.window.Hide() } func (rs *RepoStatus) Toggle() { if !rs.Ready() { return } log.Log(CHANGE, "Toggle() window ready =", rs.ready) if rs.window.Hidden() { rs.Show() } else { rs.Hide() } } func (rs *RepoStatus) Ready() bool { if rs == nil { return false } if rs.window == nil { return false } return rs.ready } // disable all things besides Update() button func (rs *RepoStatus) DisableEverything() { log.Log(INFO, "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.develMergeB.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.develMergeB.Enable() } func (rs *RepoStatus) Disable() { rs.window.Disable() } func (rs *RepoStatus) Enable() { rs.window.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() rs.develMergeB.SetLabel("ready to release") if len(rs.versionMessage.String()) == 0 { // force there to be a commit message rs.releaseVersion.Disable() } else { // rs.generateCmd() rs.releaseVersion.Enable() } }