diff --git a/argvAutoshell.go b/argvAutoshell.go index 76ae9c0..fd76d45 100644 --- a/argvAutoshell.go +++ b/argvAutoshell.go @@ -38,7 +38,7 @@ func (args) doBashAuto() { case "delete": deleteMatch() case "dirty": - fmt.Println("--verbose") + fmt.Println("") case "examine": fmt.Println("fix") case "list": diff --git a/doGui.go b/doGui.go index 8ff3d1f..1e3d513 100644 --- a/doGui.go +++ b/doGui.go @@ -22,37 +22,48 @@ import ( func debug() { time.Sleep(2 * time.Second) for { - var found *gitpb.Repos now := time.Now() - tmp := fmt.Sprintf("All (%d)", me.forge.Repos.Len()) - me.repoAllB.SetLabel(tmp) - - found = findMergeToDevel() - tmp = fmt.Sprintf("needs merge to devel (%d)", found.Len()) - me.repoDevelMergeB.SetLabel(tmp) - - found = gitpb.NewRepos() - all := me.forge.Repos.SortByFullPath() - for all.Scan() { - repo := all.Next() - if me.forge.Config.IsReadOnly(repo.GetGoPath()) { - continue - } - - found.AppendByGoPath(repo) - + if me.repoAllB == nil { + log.Printf("finished empty forge scan here in (%s)\n", shell.FormatDuration(time.Since(now))) + time.Sleep(90 * time.Second) + continue + } + if me.repoAllB != nil { + tmp := fmt.Sprintf("All (%d)", me.forge.Repos.Len()) + me.repoAllB.SetLabel(tmp) } - tmp = fmt.Sprintf("writable (%d)", found.Len()) - me.repoWritableB.SetLabel(tmp) - doCheckDirtyAndConfigSave() - found = findDirty() - tmp = fmt.Sprintf("dirty (%d)", found.Len()) - me.repoDirtyB.SetLabel(tmp) + if me.repoDevelMergeB != nil { + found := findMergeToDevel() + tmp := fmt.Sprintf("needs merge to devel (%d)", found.Len()) + me.repoDevelMergeB.SetLabel(tmp) + } + + if me.repoWritableB != nil { + found := gitpb.NewRepos() + all := me.forge.Repos.SortByFullPath() + for all.Scan() { + repo := all.Next() + if me.forge.Config.IsReadOnly(repo.GetGoPath()) { + continue + } + + found.AppendByGoPath(repo) + + } + tmp := fmt.Sprintf("writable (%d)", found.Len()) + me.repoWritableB.SetLabel(tmp) + } + + if me.repoDirtyB != nil { + doCheckDirtyAndConfigSave() + found := findDirty() + tmp := fmt.Sprintf("dirty (%d)", found.Len()) + me.repoDirtyB.SetLabel(tmp) + } log.Printf("finished a forge scan here in (%s)\n", shell.FormatDuration(time.Since(now))) time.Sleep(90 * time.Second) - } } @@ -210,6 +221,109 @@ func drawWindow(win *gadgets.BasicWindow) { grid.NewButton("git pull", func() { log.Info("todo: run git pull on each repo") }) + + me.repoDevelMergeB = grid.NewButton("merge", func() { + found := findMergeToDevel() + _, box := makeStandardReposWindow("repos to merge from user to devel", found) + hbox := box.Box().Horizontal() + hbox.NewButton("merge all", func() { + win.Disable() + defer win.Enable() + all := found.SortByFullPath() + for all.Scan() { + repo := all.Next() + if repo.CheckDirty() { + log.Info("repo is dirty", repo.GetGoPath()) + continue + } + log.Info("Starting merge on", repo.GetGoPath()) + if repo.CheckoutDevel() { + log.Info("checkout devel failed", repo.GetGoPath()) + return + } + if _, err := repo.MergeToDevel(); err != nil { + log.Info("merge from user failed", repo.GetGoPath(), err) + // log.Info(strings.Join(r.Stdout, "\n")) + // log.Info(strings.Join(r.Stderr, "\n")) + return + } + if repo.CheckoutMaster() { + log.Info("checkout master failed", repo.GetGoPath()) + return + } + if _, err := repo.MergeToMaster(); err != nil { + log.Info("merge from devel failed", repo.GetGoPath(), err) + return + } + + } + }) + }) + var problemsWin *repoProblemsWindow + grid.NewButton("Repo Problems", func() { + if problemsWin != nil { + problemsWin.Toggle() + return + } + problemsWin = makeRepoProblemsWindow() + }) + grid.NextRow() + + // grid := hackWin.Group.RawGrid() + group2 := hackWin.Stack.NewGroup("Merge") + grid = group2.RawGrid() + + grid.NewButton("merge to devel", func() { + win.Disable() + defer win.Enable() + + mergeUserToDevel(true) + }) + + grid.NewButton("merge to master", func() { + win.Disable() + defer win.Enable() + + mergeDevelToMaster(true) + }) + + grid.NewButton("merge all", func() { + win.Disable() + defer win.Enable() + + me.argvCheckoutUser = false + me.argvCheckoutDevel = true + me.argvCheckoutMaster = false + if err := doCheckoutShared(); err != nil { + log.Info("checkout error:", err) + } else { + log.Info("checkout was ok") + } + + mergeUserToDevel(true) + + me.argvCheckoutUser = false + me.argvCheckoutDevel = false + me.argvCheckoutMaster = true + if err := doCheckoutShared(); err != nil { + log.Info("checkout error:", err) + } else { + log.Info("checkout was ok") + } + + mergeDevelToMaster(true) + }) + + group3 := hackWin.Stack.NewGroup("work in progress") + grid = group3.RawGrid() + + grid.NewButton("forge ConfigSave()", func() { + me.forge.ConfigSave() + }) + + grid.NewButton("debugger()", func() { + debugger.DebugWindow() + }) }) grid.NextRow() @@ -270,121 +384,6 @@ func drawWindow(win *gadgets.BasicWindow) { makeStandardReposWindow("All repos", me.found) }) - me.repoDevelMergeB = grid.NewButton("merge", func() { - found := findMergeToDevel() - _, box := makeStandardReposWindow("repos to merge from user to devel", found) - hbox := box.Box().Horizontal() - hbox.NewButton("merge all", func() { - win.Disable() - defer win.Enable() - all := found.SortByFullPath() - for all.Scan() { - repo := all.Next() - if repo.CheckDirty() { - log.Info("repo is dirty", repo.GetGoPath()) - continue - } - log.Info("Starting merge on", repo.GetGoPath()) - if repo.CheckoutDevel() { - log.Info("checkout devel failed", repo.GetGoPath()) - return - } - if _, err := repo.MergeToDevel(); err != nil { - log.Info("merge from user failed", repo.GetGoPath(), err) - // log.Info(strings.Join(r.Stdout, "\n")) - // log.Info(strings.Join(r.Stderr, "\n")) - return - } - if repo.CheckoutMaster() { - log.Info("checkout master failed", repo.GetGoPath()) - return - } - if _, err := repo.MergeToMaster(); err != nil { - log.Info("merge from devel failed", repo.GetGoPath(), err) - return - } - - } - }) - }) - var problemsWin *repoProblemsWindow - grid.NewButton("Repo Problems", func() { - if problemsWin != nil { - problemsWin.Toggle() - return - } - problemsWin = makeRepoProblemsWindow() - }) - grid.NextRow() - - group2 = vbox.NewGroup("Merge") - grid = group2.RawGrid() - - grid.NewButton("merge to devel", func() { - win.Disable() - defer win.Enable() - - mergeUserToDevel(true) - }) - - grid.NewButton("merge to master", func() { - win.Disable() - defer win.Enable() - - mergeDevelToMaster(true) - }) - - grid.NewButton("merge all", func() { - win.Disable() - defer win.Enable() - - me.argvCheckoutUser = false - me.argvCheckoutDevel = true - me.argvCheckoutMaster = false - if err := doCheckoutShared(); err != nil { - log.Info("checkout error:", err) - } else { - log.Info("checkout was ok") - } - - mergeUserToDevel(true) - - me.argvCheckoutUser = false - me.argvCheckoutDevel = false - me.argvCheckoutMaster = true - if err := doCheckoutShared(); err != nil { - log.Info("checkout error:", err) - } else { - log.Info("checkout was ok") - } - - mergeDevelToMaster(true) - }) - - group3 := vbox.NewGroup("work in progress") - grid = group3.RawGrid() - - grid.NewButton("forge ConfigSave()", func() { - me.forge.ConfigSave() - }) - - grid.NewButton("debugger()", func() { - debugger.DebugWindow() - }) - - /* - var patchWin *patchesWindow - - grid.NewButton("Patches Window", func() { - if patchWin != nil { - patchWin.Toggle() - return - } - patchWin = new(patchesWindow) - patchWin.initWindow() - patchWin.Show() - }) - */ } // sets the text in the labels in the window @@ -425,9 +424,11 @@ func forgeSwitchMode(newMode forgepb.ForgeMode) { me.modeUserW.Enable() } - if me.forge.Config.Mode != forgepb.ForgeMode_USER { - doDisableUserW() - } + /* + if me.forge.Config.Mode != forgepb.ForgeMode_USER { + doDisableUserW() + } + */ me.forge.SetConfigSave(true) me.forge.ConfigSave()