summaryrefslogtreecommitdiff
path: root/windowRepos.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-12-23 03:45:30 -0600
committerJeff Carr <[email protected]>2024-12-23 03:45:30 -0600
commitb7a6001ba450de82e1aa216410f236f516f50a17 (patch)
tree8a612ac0b88a33882a23028d4ecbaf4c271b851e /windowRepos.go
parente68cb3e80f792b0288680ec04ceb4b9c77426563 (diff)
submit sends patches
Diffstat (limited to 'windowRepos.go')
-rw-r--r--windowRepos.go202
1 files changed, 202 insertions, 0 deletions
diff --git a/windowRepos.go b/windowRepos.go
new file mode 100644
index 0000000..736ba15
--- /dev/null
+++ b/windowRepos.go
@@ -0,0 +1,202 @@
+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
+
+ // the top box of the repolist window
+ topbox *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.topbox = r.repoMenu()
+
+ r.View = repolist.InitBox(me.forge, r.box)
+ r.View.Enable()
+
+ r.View.ScanRepositories()
+
+ /*
+ r.View = repolist.AutotypistView(r.box)
+
+ showncount := r.View.MirrorShownCount()
+ r.topbox.Append(showncount)
+ duration := r.View.MirrorScanDuration()
+ r.topbox.Append(duration)
+ */
+ return r
+}
+
+func (r *repoWindow) repoMenu() *gui.Node {
+ // 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("show apps", func() {
+ loop := me.repos.View.ReposSortByName()
+ for loop.Scan() {
+ repo := loop.Repo()
+ rtype := repo.Status.RepoType()
+ switch rtype {
+ case "'binary'":
+ // log.Info(repo.Status.Path(), "compile here. Show()")
+ repo.Show()
+ case "'library'":
+ // log.Info(repo.Status.Path(), "library here. Hide()")
+ repo.Hide()
+ default:
+ log.Info(repo.Status.Path(), "unknown type", rtype)
+ // repo.Hide()
+ }
+ }
+ })
+ box2.NewButton("scan now", func() {
+ log.Info("re-scanning now")
+ i, s := me.repos.View.ScanRepositories()
+ log.Info("re-scanning done", i, "repos in", s)
+ })
+
+ return box2
+}
+
+func (r *repoWindow) mergeAllDevelToMain() bool {
+ log.Info("merge all here")
+ loop := me.repos.View.ReposSortByName()
+ for loop.Scan() {
+ repo := loop.Repo()
+ if repo.ReadOnly() {
+ log.Info("skipping readonly", repo.Name(), repo.State())
+ continue
+ }
+ if repo.State() != "merge to main" {
+ log.Info("skipping. not merge to main", repo.Name(), repo.State())
+ continue
+ }
+ if repo.CheckDirty() {
+ log.Info("skipping dirty", repo.Name(), repo.State())
+ continue
+ }
+ log.Info("repo:", repo.Name(), repo.State())
+ repo.NewScan()
+ if repo.Status.MergeDevelToMaster() {
+ log.Warn("THINGS SEEM OK fullAutomation() returned true.")
+ } else {
+ log.Warn("last repo:", repo.Name())
+ 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")
+ loop := me.repos.View.ReposSortByName()
+ for loop.Scan() {
+ repo := loop.Repo()
+ if repo.ReadOnly() {
+ log.Info("skipping readonly", repo.Name(), repo.State())
+ continue
+ }
+ if repo.State() != "merge to devel" {
+ log.Info("skipping. not merge to devel", repo.Name(), repo.State())
+ continue
+ }
+ if repo.CheckDirty() {
+ log.Info("skipping dirty", repo.Name(), repo.State())
+ continue
+ }
+ log.Info("repo:", repo.Name(), repo.State())
+ repo.NewScan()
+ if repo.Status.MergeUserToDevel() {
+ log.Warn("THINGS SEEM OK fullAutomation() returned true.")
+ } else {
+ log.Warn("last repo:", repo.Status.Path())
+ log.Warn("THINGS FAILED fullAutomation() returned false")
+ return false
+ }
+ repo.NewScan()
+ }
+ log.Warn("EVERYTHING WORKED")
+ return true
+}