summaryrefslogtreecommitdiff
path: root/branchesBox.go
blob: c1de0e290cb31364ec4ab13ba37a19bd3dc83d60 (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
package repostatus

import (
	"strings"

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

func (rs *RepoStatus) makeBranchesBox(parent *gui.Node) {
	rs.gitBranchesGroup = parent.NewGroup("branches") // `progname:"BRANCHES"` // can the toolkits use these for i18n support?
	newgrid := rs.gitBranchesGroup.NewGrid("gridnuts", 0, 0)

	rs.lasttag = gadgets.NewOneLiner(newgrid, "last tag") // `progname:"LASTTAG"`
	newgrid.NextRow()

	rs.masterBranchVersion = gadgets.NewOneLiner(newgrid, "master") // `progname:"MASTERBRANCH"`
	newgrid.NextRow()
	rs.develBranchVersion = gadgets.NewOneLiner(newgrid, "devel") // `progname:"DEVELBRANCH"`
	newgrid.NextRow()
	rs.userBranchVersion = gadgets.NewOneLiner(newgrid, "user") // `progname:"USERBRANCH"`
	newgrid.NextRow()

	rs.currentBranch = gadgets.NewOneLiner(newgrid, "current branch") // `progname:"CURRENTBRANCH"`
	newgrid.NextRow()
	rs.currentVersion = gadgets.NewOneLiner(newgrid, "current version") // `progname:"CURRENTVERSION"`
	newgrid.NextRow()

	rs.switchBranchB = newgrid.NewButton("Switch Branch", func() { // `progname:"SWITCH"`
		bname := rs.targetBranch.String()
		log.Info("Should switch to branch", bname, "here")

		var all [][]string
		all = append(all, []string{"git", "checkout", bname})
		if rs.DoAll(all) {
			log.Info("branch switched to", bname)
		} else {
			log.Info("branch switched to", bname, "failed")
		}
		rs.UpdateCurrent()
	})

	rs.targetBranch = newgrid.NewDropdown() // `progname:"TARGET"`
	// rs.targetBranch.AddText("master")
	newgrid.NextRow()

	rs.showBranchesButton = newgrid.NewButton("scan branches()", func() {
		err, out := rs.RunCmd([]string{"git", "branch", "--all"})
		if err != nil {
			log.Log(WARN, "git branch failed", rs.String())
		}
		all := strings.Split(out, "\n")
		for i, s := range all {
			log.Log(WARN, "found branch", i, s)
			rs.targetBranch.AddText(s)
		}
		i := len(all)
		log.Log(WARN, "branch count =", i)
	})
	newgrid.NextRow()

	rs.checkBranchesButton = newgrid.NewButton("CheckBranches()", func() {
		if rs.CheckBranches() {
			log.Log(WARN, "Branches are perfect")
		} else {
			log.Log(WARN, "Branches are not perfect")
		}
	})
	newgrid.NextRow()

	newgrid.NewButton("Revert master to devel", func() {
		rs.RevertMasterToDevel()
	})
}