summaryrefslogtreecommitdiff
path: root/common.go
blob: 2d30b93483d34bd699a35930dbe48b9d43625a33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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()
	}
}