summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--globalDisplayOptions.go11
-rw-r--r--main.go9
-rw-r--r--repoview.go195
-rw-r--r--structs.go3
4 files changed, 207 insertions, 11 deletions
diff --git a/globalDisplayOptions.go b/globalDisplayOptions.go
index 5f60997..52c9ee3 100644
--- a/globalDisplayOptions.go
+++ b/globalDisplayOptions.go
@@ -52,10 +52,10 @@ func globalDisplayOptions(vbox *gui.Node) {
group1.NewButton("Show Repository Window", func() {
globalDisplaySetRepoState()
- if me.repoView.Hidden() {
- me.repoView.Show()
+ if me.repos.Hidden() {
+ me.repos.Show()
} else {
- me.repoView.Hide()
+ me.repos.Hide()
}
})
@@ -78,9 +78,12 @@ func globalDisplayOptions(vbox *gui.Node) {
}
scanbox := group1.Box().Horizontal()
me.autoScanReposCB = scanbox.NewCheckbox("auto scan").SetChecked(true)
+ me.autoScanReposCB.Custom = func() {
+ me.repos.View.SetAutoScan(me.autoScanReposCB.Checked())
+ }
scanbox.NewButton("scan now", func() {
log.Info("re-scanning repos now")
- repolist.ScanRepositories()
+ me.repos.View.ScanRepositories()
})
me.duration = scanbox.NewLabel("")
diff --git a/main.go b/main.go
index ab412e8..f8450b7 100644
--- a/main.go
+++ b/main.go
@@ -6,7 +6,6 @@ import (
"strings"
"go.wit.com/lib/debugger"
- "go.wit.com/lib/gui/repolist"
"go.wit.com/lib/gui/repostatus"
"go.wit.com/log"
@@ -41,7 +40,7 @@ func main() {
globalResetOptions(me.mainbox)
- me.repoView = repolist.AutotypistView()
+ me.repos = makeRepoView()
usr, _ := user.Current()
if args.OnlyMe {
@@ -53,19 +52,19 @@ func main() {
path = strings.TrimPrefix(path, me.goSrcPwd.String())
path = strings.Trim(path, "/")
log.Info("addRepo()", i, path)
- me.repoView.AddRepo(path, "master", "devel", usr.Username)
+ me.repos.View.AddRepo(path, "master", "devel", usr.Username)
}
}
// process everything on the command line
handleCmdLine()
- repolist.ScanRepositories()
+ me.repos.View.ScanRepositories()
me.Enable()
// processing is done. update the repo summary box
me.summary.Update()
// intermittently scans the status indefinitly
- repolist.Watchdog()
+ me.repos.View.Watchdog()
}
diff --git a/repoview.go b/repoview.go
new file mode 100644
index 0000000..a69cbca
--- /dev/null
+++ b/repoview.go
@@ -0,0 +1,195 @@
+package main
+
+import (
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/lib/gui/repolist"
+ "go.wit.com/log"
+
+ "go.wit.com/gui"
+)
+
+type repoWindow struct {
+ win *gadgets.BasicWindow
+ box *gui.Node
+ View *repolist.RepoList
+}
+
+func (r *repoWindow) Hidden() bool {
+ return r.win.Hidden()
+}
+
+func (r *repoWindow) Show() {
+ r.win.Show()
+}
+
+func (r *repoWindow) Hide() {
+ r.win.Hide()
+}
+
+func (r *repoWindow) Disable() {
+ r.box.Disable()
+}
+
+func (r *repoWindow) Enable() {
+ r.box.Enable()
+}
+
+// you can only have one of these
+func makeRepoView() *repoWindow {
+ if me.repos != nil {
+ return me.repos
+ }
+ r := new(repoWindow)
+ r.win = gadgets.RawBasicWindow("All git repositories in ~/go/src/")
+ r.win.Make()
+
+ r.box = r.win.Box().NewBox("bw vbox", false)
+ // me.reposwin.Draw()
+ r.win.Custom = func() {
+ log.Warn("GOT HERE: main() gadgets.NewBasicWindow() close")
+ log.Warn("Should I do something special here?")
+ }
+
+ r.repoAllButtons()
+
+ r.View = repolist.AutotypistView(r.box)
+
+ return r
+}
+
+func (r *repoWindow) showApps() {
+ for _, repo := range r.View.AllRepos() {
+ switch repo.RepoType() {
+ case "binary":
+ //log.Info("compile here. Show()")
+ repo.Show()
+ case "library":
+ //log.Info("library here. Hide()")
+ repo.Hide()
+ default:
+ log.Info("showApps() unknown. Show()")
+ repo.Hide()
+ }
+
+ }
+}
+
+func (r *repoWindow) repoAllButtons() {
+ // reposbox.SetExpand(false)
+ group1 := r.box.NewGroup("Run on all repos:")
+
+ hbox := group1.Box()
+ // hbox.Horizontal()
+ hbox.Vertical()
+
+ box2 := hbox.Box().Vertical()
+ box2.NewButton("merge all user to devel", func() {
+ r.Disable()
+ if !r.mergeAllUserToDevel() {
+ return
+ }
+ r.Enable()
+ })
+
+ box2.NewButton("merge all devel to main", func() {
+ r.Disable()
+ if !r.mergeAllDevelToMain() {
+ return
+ }
+ r.Enable()
+ })
+
+ box2.NewButton("merge it all", func() {
+ r.Disable()
+ if !r.mergeAllUserToDevel() {
+ return
+ }
+ if !r.mergeAllDevelToMain() {
+ return
+ }
+ r.Enable()
+ })
+
+ box2.NewButton("test all builds", func() {
+ r.Disable()
+ defer r.Enable()
+ r.showApps()
+ for _, repo := range r.View.AllRepos() {
+ if repo.Hidden() {
+ // log.Info("skip hidden", repo.String())
+ } else {
+ log.Info("try to build", repo.String())
+ if repo.Build() {
+ log.Info("build worked", repo.String())
+ } else {
+ log.Info("build failed", repo.String())
+ go repo.Xterm("bash")
+ return
+ }
+ }
+ }
+ log.Info("")
+ log.Info("every build worked !!!")
+ log.Info("")
+ })
+}
+
+func (r *repoWindow) mergeAllDevelToMain() bool {
+ log.Info("merge all here")
+ for _, repo := range r.View.AllRepos() {
+ if repo.ReadOnly() {
+ log.Info("skipping readonly", repo.String(), repo.Status())
+ continue
+ }
+ if repo.Status() != "merge to main" {
+ log.Info("skipping. not merge to main", repo.String(), repo.Status())
+ continue
+ }
+ if repo.CheckDirty() {
+ log.Info("skipping dirty", repo.String(), repo.Status())
+ continue
+ }
+ log.Info("found", repo.String(), repo.Status())
+ repo.NewScan()
+ if repo.MergeDevelToMaster() {
+ log.Warn("THINGS SEEM OK fullAutomation() returned true.")
+ } else {
+ log.Warn("last repo:", repo.Path())
+ log.Warn("THINGS FAILED fullAutomation() returned false")
+ return false
+ }
+ repo.NewScan()
+ }
+ log.Warn("EVERYTHING WORKED")
+ return true
+}
+
+func (r *repoWindow) mergeAllUserToDevel() bool {
+ log.Info("merge all here")
+ for _, repo := range r.View.AllRepos() {
+ if repo.ReadOnly() {
+ log.Info("skipping readonly", repo.String(), repo.Status())
+ continue
+ }
+ if repo.Status() != "merge to devel" {
+ log.Info("skipping. not merge to devel", repo.String(), repo.Status())
+ continue
+ }
+ if repo.CheckDirty() {
+ log.Info("skipping dirty", repo.String(), repo.Status())
+ continue
+ }
+ log.Info("found", repo.String(), repo.Status())
+ repo.NewScan()
+ if repo.MergeUserToDevel() {
+ log.Warn("THINGS SEEM OK fullAutomation() returned true.")
+ } else {
+ log.Warn("last repo:", repo.Path())
+ log.Warn("THINGS FAILED fullAutomation() returned false")
+ return false
+ }
+ repo.NewScan()
+ }
+ log.Warn("EVERYTHING WORKED")
+ return true
+}
diff --git a/structs.go b/structs.go
index 57aa8de..1e8a343 100644
--- a/structs.go
+++ b/structs.go
@@ -3,7 +3,6 @@ package main
import (
"go.wit.com/gui"
"go.wit.com/lib/gadgets"
- "go.wit.com/lib/gui/repolist"
)
var me *autoType
@@ -30,7 +29,7 @@ type autoType struct {
lw *gadgets.BasicWindow
// our view of the repositories
- repoView *repolist.RepoList
+ repos *repoWindow
// #### autotypist Global Display Options
autoHidePerfect *gui.Node