summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--branchesBox.go73
-rw-r--r--commandsBox.go97
-rw-r--r--draw.go171
-rw-r--r--git.go4
-rw-r--r--revert.go45
-rw-r--r--structs.go2
-rw-r--r--tagWindow.go16
-rw-r--r--unix.go13
8 files changed, 259 insertions, 162 deletions
diff --git a/branchesBox.go b/branchesBox.go
new file mode 100644
index 0000000..38c1d26
--- /dev/null
+++ b/branchesBox.go
@@ -0,0 +1,73 @@
+package repostatus
+
+import (
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/log"
+)
+
+func (rs *RepoStatus) makeBranchesBox() {
+ rs.gitBranchesGroup = rs.window.Box().NewGroup("branches")
+ newgrid := rs.gitBranchesGroup.NewGrid("gridnuts", 2, 2)
+
+ rs.lasttag = gadgets.NewOneLiner(newgrid, "last tag")
+
+ rs.masterBranchVersion = gadgets.NewOneLiner(newgrid, "master")
+ rs.develBranchVersion = gadgets.NewOneLiner(newgrid, "devel")
+ rs.userBranchVersion = gadgets.NewOneLiner(newgrid, "user")
+
+ rs.currentBranch = gadgets.NewOneLiner(newgrid, "current branch")
+ rs.currentVersion = gadgets.NewOneLiner(newgrid, "current version")
+
+ rs.showBranchesButton = newgrid.NewButton("getBranches()", func() {
+ all := rs.getBranches()
+ i := len(all)
+ log.Log(WARN, "branch count =", i)
+ })
+
+ rs.checkBranchesButton = newgrid.NewButton("CheckBranches()", func() {
+ if rs.CheckBranches() {
+ log.Log(WARN, "Branches are perfect")
+ } else {
+ log.Log(WARN, "Branches are not perfect")
+ }
+ })
+
+ newgrid.NewButton("show .git/config", func() {
+ if rs.gitConfig == nil {
+ log.Log(WARN, "Nonexistant or damaged .git/config", rs.String())
+ return
+ }
+ log.Log(WARN, ".git/config:", rs.realPath.String())
+
+ // The info:
+ for name, remote := range rs.gitConfig.remotes {
+ log.Log(WARN, " ", name, "url:", remote.url)
+ }
+ for name, branch := range rs.gitConfig.branches {
+ log.Log(WARN, " ", name, "remote:", branch.remote, "merge", branch.merge)
+ }
+ })
+
+ newgrid.NewButton("CheckDirty()", func() {
+ if rs.CheckDirty() {
+ log.Log(WARN, "is dirty")
+ } else {
+ log.Log(WARN, "is not dirty")
+ }
+ })
+
+ // rs.TagsW = rs.TagWindow()
+
+ newgrid.NewButton("Show tags", func() {
+ if rs.TagsW == nil {
+ log.Warn("error: found rs.TagsW == nil")
+ rs.TagsW = rs.TagWindow()
+ return
+ }
+ if rs.TagsW.Hidden() {
+ rs.TagsW.Show()
+ } else {
+ rs.TagsW.Show()
+ }
+ })
+}
diff --git a/commandsBox.go b/commandsBox.go
new file mode 100644
index 0000000..865e4b0
--- /dev/null
+++ b/commandsBox.go
@@ -0,0 +1,97 @@
+package repostatus
+
+import (
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/log"
+)
+
+func (rs *RepoStatus) drawGitCommands() {
+ rs.gitCommandsGroup = rs.window.Box().NewGroup("git commands")
+ newgrid := rs.gitCommandsGroup.NewGrid("gridnuts", 0, 0)
+
+ newgrid.NewButton("update", func() {
+ rs.Update()
+ })
+ newgrid.NextRow()
+
+ newgrid.NewButton("git pull", func() {
+ var cmd []string
+ cmd = append(cmd, "git", "pull")
+ err, b, output := RunCmd(rs.realPath.String(), cmd)
+ log.Warn("Did git pull here", err, b, output)
+ })
+ newgrid.NextRow()
+
+ label := "merge " + rs.userWorkingName.String() + " to " + rs.develWorkingName.String()
+ rs.develMergeB = newgrid.NewButton(label, func() {
+ rs.Disable()
+ if rs.RunDevelMergeB() {
+ log.Warn("THINGS SEEM OK fullAutomation() returned true.")
+ } else {
+ log.Warn("THINGS FAILED fullAutomation() returned false")
+ }
+ rs.Enable()
+ })
+
+ label = "merge " + rs.develWorkingName.String() + " to " + rs.mainWorkingName.String()
+ rs.mainMergeB = newgrid.NewButton(label, func() {
+ rs.Disable()
+ if rs.RunDevelMergeB() {
+ log.Warn("THINGS SEEM OK fullAutomation() returned true.")
+ } else {
+ log.Warn("THINGS FAILED fullAutomation() returned false")
+ }
+ rs.Enable()
+ })
+ newgrid.NextRow()
+
+ rs.major = gadgets.NewBasicCombobox(newgrid, "major")
+ rs.major.Custom = func() {
+ rs.setTag()
+ rs.generateCmd()
+ }
+ rs.major.Hide()
+ newgrid.NextRow()
+
+ rs.minor = gadgets.NewBasicCombobox(newgrid, "minor")
+ rs.minor.Custom = func() {
+ rs.setTag()
+ rs.generateCmd()
+ }
+ rs.minor.Hide()
+ newgrid.NextRow()
+
+ rs.revision = gadgets.NewBasicCombobox(newgrid, "revision")
+ rs.revision.Custom = func() {
+ rs.setTag()
+ rs.generateCmd()
+ }
+ rs.revision.Hide()
+ newgrid.NextRow()
+
+ // newgrid.NewLabel("new tag version")
+ rs.newversion = newgrid.NewLabel("0.0.1")
+ rs.newversion.Hide()
+ newgrid.NextRow()
+
+ rs.versionMessage = gadgets.NewBasicEntry(newgrid, "tag message")
+ rs.versionMessage.Custom = func() {
+ rs.generateCmd()
+ }
+ rs.versionMessage.Hide()
+ newgrid.NextRow()
+
+ rs.versionCmdOutput = gadgets.NewOneLiner(newgrid, "tag cmd")
+ rs.versionCmdOutput.Hide()
+ newgrid.NextRow()
+
+ rs.releaseVersion = newgrid.NewButton("tag and release new version", func() {
+ rs.Disable()
+ rs.runReleaseVersionB()
+ })
+ rs.releaseVersion.Hide()
+ newgrid.NextRow()
+
+ newgrid.Margin()
+ newgrid.Pad()
+}
diff --git a/draw.go b/draw.go
index c1094c2..6c8b61a 100644
--- a/draw.go
+++ b/draw.go
@@ -20,81 +20,14 @@ func (rs *RepoStatus) draw() {
rs.drawGitStatus()
// display the git branches and options
- rs.drawGitBranches()
+ rs.makeBranchesBox()
// show standard git commit and merge controls
rs.drawGitCommands()
}
-func (rs *RepoStatus) drawGitBranches() {
- rs.gitBranchesGroup = rs.window.Box().NewGroup("branches")
- newgrid := rs.gitBranchesGroup.NewGrid("gridnuts", 2, 2)
-
- rs.lasttag = gadgets.NewOneLiner(newgrid, "last tag")
-
- rs.masterBranchVersion = gadgets.NewOneLiner(newgrid, "master")
- rs.develBranchVersion = gadgets.NewOneLiner(newgrid, "devel")
- rs.userBranchVersion = gadgets.NewOneLiner(newgrid, "user")
-
- rs.currentBranch = gadgets.NewOneLiner(newgrid, "current branch")
- rs.currentVersion = gadgets.NewOneLiner(newgrid, "current version")
-
- rs.showBranchesButton = newgrid.NewButton("getBranches()", func() {
- all := rs.getBranches()
- i := len(all)
- log.Log(WARN, "branch count =", i)
- })
-
- rs.checkBranchesButton = newgrid.NewButton("CheckBranches()", func() {
- if rs.CheckBranches() {
- log.Log(WARN, "Branches are perfect")
- } else {
- log.Log(WARN, "Branches are not perfect")
- }
- })
-
- newgrid.NewButton("show .git/config", func() {
- if rs.gitConfig == nil {
- log.Log(WARN, "Nonexistant or damaged .git/config", rs.String())
- return
- }
- log.Log(WARN, ".git/config:", rs.realPath.String())
-
- // The info:
- for name, remote := range rs.gitConfig.remotes {
- log.Log(WARN, " ", name, "url:", remote.url)
- }
- for name, branch := range rs.gitConfig.branches {
- log.Log(WARN, " ", name, "remote:", branch.remote, "merge", branch.merge)
- }
- })
-
- newgrid.NewButton("CheckDirty()", func() {
- if rs.CheckDirty() {
- log.Log(WARN, "is dirty")
- } else {
- log.Log(WARN, "is not dirty")
- }
- })
-
- rs.TagsW = rs.TagWindow()
-
- newgrid.NewButton("Show tags", func() {
- if rs.TagsW == nil {
- log.Warn("error: found rs.TagsW == nil")
- rs.TagsW = rs.TagWindow()
- return
- }
- if rs.TagsW.Hidden() {
- rs.TagsW.Show()
- } else {
- rs.TagsW.Show()
- }
- })
-}
-
func (rs *RepoStatus) drawGitStatus() {
- rs.gitStatusGroup = rs.window.Box().NewGroup("What GO Knows It Has")
+ rs.gitStatusGroup = rs.window.Box().NewGroup("What GIT Knows It Has")
newgrid := rs.gitStatusGroup.NewGrid("gridnuts", 2, 2)
newgrid.Margin()
newgrid.Pad()
@@ -109,16 +42,19 @@ func (rs *RepoStatus) drawGitStatus() {
rs.develWorkingName.SetValue("devel")
rs.userWorkingName = gadgets.NewOneLiner(newgrid, "user working branch")
rs.userWorkingName.SetValue("uid")
- rs.tagsDrop = gadgets.NewBasicDropdown(newgrid, "all releases")
- // git for-each-ref --sort=taggerdate --format '%(tag) ,,,_,,, %(subject)' refs/tags
- var cmd []string
- cmd = append(cmd, "git", "for-each-ref", "--sort=taggerdate", "--format", "%(tag) %(subject)", "refs/tags")
- _, _, output := RunCmd(rs.realPath.String(), cmd)
- log.Log(INFO, output)
- for _, line := range strings.Split(output, "\n") {
- rs.tagsDrop.AddText(line)
- }
+ /*
+ rs.tagsDrop = gadgets.NewBasicDropdown(newgrid, "all releases")
+
+ // git for-each-ref --sort=taggerdate --format '%(tag) ,,,_,,, %(subject)' refs/tags
+ var cmd []string
+ cmd = append(cmd, "git", "for-each-ref", "--sort=taggerdate", "--format", "%(tag) %(subject)", "refs/tags")
+ _, _, output := rs.RunCmd(cmd)
+ log.Log(INFO, output)
+ for _, line := range strings.Split(output, "\n") {
+ rs.tagsDrop.AddText(line)
+ }
+ */
rs.dirtyLabel = gadgets.NewOneLiner(newgrid, "dirty")
rs.readOnly = gadgets.NewOneLiner(newgrid, "read only")
@@ -202,85 +138,6 @@ func (rs *RepoStatus) runFullAutomation() bool {
return true
}
-func (rs *RepoStatus) drawGitCommands() {
- rs.gitCommandsGroup = rs.window.Box().NewGroup("git commands")
- newgrid := rs.gitCommandsGroup.NewGrid("gridnuts", 2, 2)
-
- newgrid.NewButton("update", func() {
- rs.Update()
- })
-
- newgrid.NewButton("git pull", func() {
- var cmd []string
- cmd = append(cmd, "git", "pull")
- err, b, output := RunCmd(rs.realPath.String(), cmd)
- log.Warn("Did git pull here", err, b, output)
- })
-
- label := "merge " + rs.userWorkingName.String() + " to " + rs.develWorkingName.String()
- rs.develMergeB = newgrid.NewButton(label, func() {
- rs.Disable()
- if rs.RunDevelMergeB() {
- log.Warn("THINGS SEEM OK fullAutomation() returned true.")
- } else {
- log.Warn("THINGS FAILED fullAutomation() returned false")
- }
- rs.Enable()
- })
-
- label = "merge " + rs.develWorkingName.String() + " to " + rs.mainWorkingName.String()
- rs.mainMergeB = newgrid.NewButton(label, func() {
- rs.Disable()
- if rs.RunDevelMergeB() {
- log.Warn("THINGS SEEM OK fullAutomation() returned true.")
- } else {
- log.Warn("THINGS FAILED fullAutomation() returned false")
- }
- rs.Enable()
- })
-
- rs.major = gadgets.NewBasicCombobox(newgrid, "major")
- rs.major.Custom = func() {
- rs.setTag()
- rs.generateCmd()
- }
- rs.major.Hide()
- rs.minor = gadgets.NewBasicCombobox(newgrid, "minor")
- rs.minor.Custom = func() {
- rs.setTag()
- rs.generateCmd()
- }
- rs.minor.Hide()
- rs.revision = gadgets.NewBasicCombobox(newgrid, "revision")
- rs.revision.Custom = func() {
- rs.setTag()
- rs.generateCmd()
- }
- rs.revision.Hide()
-
- // newgrid.NewLabel("new tag version")
- rs.newversion = newgrid.NewLabel("0.0.1")
- rs.newversion.Hide()
-
- rs.versionMessage = gadgets.NewBasicEntry(newgrid, "tag message")
- rs.versionMessage.Custom = func() {
- rs.generateCmd()
- }
- rs.versionMessage.Hide()
-
- rs.versionCmdOutput = gadgets.NewOneLiner(newgrid, "tag cmd")
- rs.versionCmdOutput.Hide()
-
- rs.releaseVersion = newgrid.NewButton("tag and release new version", func() {
- rs.Disable()
- rs.runReleaseVersionB()
- })
- rs.releaseVersion.Hide()
-
- newgrid.Margin()
- newgrid.Pad()
-}
-
var releaseRevision string = ""
// over ride the computation of this if a release is being created
diff --git a/git.go b/git.go
index 0ddea8c..7580062 100644
--- a/git.go
+++ b/git.go
@@ -54,7 +54,7 @@ func (rs *RepoStatus) getLastTagVersion() string {
// out = run(r.path, "git", "describe --tags c871d5ecf051a7dc4e3a77157cdbc0a457eb9ae1")
out = run(rs.realPath.String(), "git", lastreal)
rs.lasttag.SetValue(out)
- rs.tagsDrop.SetText(out)
+ // rs.tagsDrop.SetText(out)
// rs.lastLabel.SetText(out)
return out
}
@@ -65,7 +65,7 @@ func (rs *RepoStatus) populateTags() {
for _, tag := range listFiles(tmp) {
if rs.tags[tag] == "" {
log.Log(INFO, "populateTags() Adding new tag", tag)
- rs.tagsDrop.AddText(tag)
+ // rs.tagsDrop.AddText(tag)
rs.tags[tag] = "origin"
}
}
diff --git a/revert.go b/revert.go
new file mode 100644
index 0000000..22a6041
--- /dev/null
+++ b/revert.go
@@ -0,0 +1,45 @@
+package repostatus
+
+import "go.wit.com/log"
+
+// reverts master to devel
+// used in the unwind process of making GUI releases
+func (rs *RepoStatus) RevertMasterToDevel() bool {
+ if rs.CheckDirty() {
+ log.Info("sorry, it's still dirty")
+ return false
+ }
+
+ curName := rs.GetCurrentBranchName()
+ mName := rs.GetMasterBranchName()
+ if curName != mName {
+ log.Info("repo is not working from main branch", curName, "!=", mName)
+ return false
+ }
+
+ log.Info("reset master to devel", curName, rs.String())
+
+ // git checkout devel
+ // git branch -D master
+ // git branch master
+ // git checkout master
+ // git push --set-upstream --force origin master
+
+ var all [][]string
+ all = append(all, []string{"git", "checkout", "devel"})
+ all = append(all, []string{"git", "branch", "-D", mName})
+ all = append(all, []string{"git", "branch", mName})
+ all = append(all, []string{"git", "checkout", mName})
+ all = append(all, []string{"git", "push", "--set-upstream", "--force", "origin", mName})
+
+ // all = append(all, []string{"git", "tag", "--delete", release.version.String()})
+ // all = append(all, []string{"git", "push", "--delete", "origin", release.version.String()})
+
+ if rs.DoAll(all) {
+ log.Info("EVERYTHING OK. RERELEASED", rs.String())
+ return true
+ }
+
+ log.Info("SOMETHING FAILED")
+ return false
+}
diff --git a/structs.go b/structs.go
index ade5e14..f1e3309 100644
--- a/structs.go
+++ b/structs.go
@@ -29,7 +29,7 @@ type RepoStatus struct {
currentBranch *gadgets.OneLiner
currentVersion *gadgets.OneLiner
- tagsDrop *gadgets.BasicDropdown
+ // tagsDrop *gadgets.BasicDropdown
lasttag *gadgets.OneLiner
masterBranchVersion *gadgets.OneLiner
diff --git a/tagWindow.go b/tagWindow.go
index 1431312..c92e961 100644
--- a/tagWindow.go
+++ b/tagWindow.go
@@ -119,7 +119,9 @@ func (tagW *repoTags) newTagBox(box *gui.Node) {
tags := []string{"%(tag)", "%(*objectname)", "%(taggerdate:raw)", "%(subject)"}
format := strings.Join(tags, "_,,,_")
- err, output := tagW.rs.RunCmd([]string{"git", "for-each-ref", "--sort=taggerdate", "--format", format})
+ cmd := []string{"git", "for-each-ref", "--sort=taggerdate", "--format", format}
+ log.Info("RUNNING:", strings.Join(cmd, " "))
+ err, output := tagW.rs.RunCmd(cmd)
if err != nil {
output = "git error_,,,_a_,,,_b_,,,c"
}
@@ -147,7 +149,17 @@ func (tagW *repoTags) newTagBox(box *gui.Node) {
rTag.subject = grid.NewLabel(parts[3])
rTag.deleteB = grid.NewButton("delete", func() {
- log.Info("remove tag")
+ tagversion := parts[0]
+ log.Info("remove tag", tagversion)
+ var all [][]string
+ all = append(all, []string{"git", "tag", "--delete", tagversion})
+ all = append(all, []string{"git", "push", "--delete", "origin", tagversion})
+
+ if tagW.rs.DoAll(all) {
+ log.Info("TAG DELETED", tagW.rs.String(), tagversion)
+ } else {
+ log.Info("TAG DELETE FAILED", tagW.rs.String(), tagversion)
+ }
})
tagW.tags = append(tagW.tags, rTag)
diff --git a/unix.go b/unix.go
index 1c8cfe0..903adba 100644
--- a/unix.go
+++ b/unix.go
@@ -411,3 +411,16 @@ func (rs *RepoStatus) XtermHold(args []string) {
log.Info("cmd = xterm", argsX)
}
}
+
+func (rs *RepoStatus) DoAll(all [][]string) bool {
+ for _, cmd := range all {
+ log.Info("doAll() RUNNING: cmd =", cmd)
+ err, out := rs.RunCmd(cmd)
+ log.Info("doAll() err =", err)
+ log.Info("doAll() out =", out)
+ if err != nil {
+ return false
+ }
+ }
+ return true
+}