summaryrefslogtreecommitdiff
path: root/draw.go
blob: 35e8d4cd45cb8c64c698a0cf0a9572d0675e4932 (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 	(
	"strconv"

	"go.wit.com/log"
	"go.wit.com/gui/gadgets"
)

// creates the actual widgets.
// it's assumed you are always passing in a box
func draw(rs *RepoStatus) {
	if ! rs.Ready() {return}
	rs.group = rs.window.Box().NewGroup("What GO Knows It Has")

	rs.grid = rs.group.NewGrid("gridnuts", 2, 2)

	rs.grid.SetNext(1,1)

	rs.path			= gadgets.NewOneLiner(rs.grid, "path")
	rs.currentBranch	= gadgets.NewOneLiner(rs.grid, "branch")
	rs.lasttag		= gadgets.NewOneLiner(rs.grid, "last tag")
	rs.currentVersion	= gadgets.NewOneLiner(rs.grid, "Version")

	rs.grid.NewLabel("tags")
	rs.tagsDrop		= rs.grid.NewDropdown("tags")
	rs.masterBranch		= gadgets.NewOneLiner(rs.grid, "master")
	rs.develBranch		= gadgets.NewOneLiner(rs.grid, "devel")
	rs.jcarrBranch		= gadgets.NewOneLiner(rs.grid, "jcarr")

	rs.dirtyLabel	= gadgets.NewOneLiner(rs.grid, "dirty")

	rs.speed	= gadgets.NewOneLiner(rs.grid, "refresh speed =")
	rs.speedActual	= gadgets.NewOneLiner(rs.grid, "speed actual =")

	rs.grid.NewButton("update", func() {
		rs.Update()
	})
	rs.grid.NewButton("recommend", func() {
		log.Warn("Is repo dirty?", rs.dirtyLabel.Get())
		log.Warn("list the known tags")
		rs.develMerge.Disable()
		rs.releaseVersion.Disable()
		rs.populateTags()
		log.Warn("Does devel == jcarr?", rs.develBranch.Get(), rs.jcarrBranch.Get())
		if rs.develBranch.Get() != rs.jcarrBranch.Get() {
			log.Warn("devel does not equal jcarr")
			log.Warn("merge or squash?")
			return
		}
		log.Warn("Does master == devel? ", rs.masterBranch.Get(), rs.develBranch.Get())
		if rs.masterBranch.Get() != rs.develBranch.Get() {
			log.Warn("master does not equal devel. merge devel into master")
			rs.develMerge.Enable()
			return
		}
		rs.getLastTagVersion()
		if rs.lasttag.Get() != rs.masterBranch.Get() {
			log.Warn("master does not equal last tag")
			rs.incrementVersion()
			rs.releaseVersion.Enable()
			return
		}
		log.Warn("Is repo pushed upstream? git.wit.org or github?")
	})

	rs.develMerge = rs.grid.NewButton("merge devel to master", func() {
		rs.checkoutBranch("master")
		if rs.getCurrentBranchName() != "master" {
			log.Warn("something went wrong switching to the master branch. full stop!")
			return
		}
		log.Warn("Should merge devel into master here")
		out := run(rs.repopath, "git", "merge devel")
		log.Warn("devel is merged? merginess is complete. perhaps", out)
		rs.develMerge.Disable() // don't let this run twice for now
	})
	rs.develMerge.Disable()

	rs.releaseVersion = rs.grid.NewButton("tag and release version", func() {
		a := rs.major.Get()
		b := rs.minor.Get()
		c := rs.revision.Get()
		newver := a + "." + b + "." + c
		log.Warn("Should tag version:", newver)
	})
	rs.releaseVersion.Disable()

	rs.vgroup = rs.window.Box().NewGroup("Version")
	rs.major = gadgets.NewBasicCombobox(rs.grid, "master")
	rs.minor = gadgets.NewBasicCombobox(rs.grid, "minor")
	rs.revision = gadgets.NewBasicCombobox(rs.grid, "revision")

	rs.grid.Margin()
	rs.grid.Pad()
}

func (rs *RepoStatus) incrementVersion() {
	lasttag := rs.lasttag.Get()
	var major, minor, revision string
	major, minor, revision = splitVersion(lasttag)
	log.Warn("Should release version here", lasttag)
	log.Warn("Should release a,b,c", major, minor, revision)

	rs.a, _ = strconv.Atoi(major)
	rs.b, _ = strconv.Atoi(minor)
	rs.c, _ = strconv.Atoi(revision)

	rs.major.Add(rs.a)
	rs.major.Add(rs.a + 1)
	rs.major.Set(rs.a)

	rs.minor.Add(rs.b)
	rs.minor.Add(rs.b + 1)
	rs.minor.Set(rs.b)

	// rs.c := strconv.Atoi(revision)
	rs.revision.Add(rs.c + 1)
	rs.revision.Add(rs.c + 2)
	rs.revision.Set(rs.c + 1)
}