mode windows

This commit is contained in:
Jeff Carr 2025-03-02 08:13:43 -06:00
parent 9ccc3d0470
commit 10a1741bd9
2 changed files with 145 additions and 144 deletions

View File

@ -38,7 +38,7 @@ func (args) doBashAuto() {
case "delete": case "delete":
deleteMatch() deleteMatch()
case "dirty": case "dirty":
fmt.Println("--verbose") fmt.Println("")
case "examine": case "examine":
fmt.Println("fix") fmt.Println("fix")
case "list": case "list":

247
doGui.go
View File

@ -22,16 +22,25 @@ import (
func debug() { func debug() {
time.Sleep(2 * time.Second) time.Sleep(2 * time.Second)
for { for {
var found *gitpb.Repos
now := time.Now() now := time.Now()
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()) tmp := fmt.Sprintf("All (%d)", me.forge.Repos.Len())
me.repoAllB.SetLabel(tmp) me.repoAllB.SetLabel(tmp)
}
found = findMergeToDevel() if me.repoDevelMergeB != nil {
tmp = fmt.Sprintf("needs merge to devel (%d)", found.Len()) found := findMergeToDevel()
tmp := fmt.Sprintf("needs merge to devel (%d)", found.Len())
me.repoDevelMergeB.SetLabel(tmp) me.repoDevelMergeB.SetLabel(tmp)
}
found = gitpb.NewRepos() if me.repoWritableB != nil {
found := gitpb.NewRepos()
all := me.forge.Repos.SortByFullPath() all := me.forge.Repos.SortByFullPath()
for all.Scan() { for all.Scan() {
repo := all.Next() repo := all.Next()
@ -42,17 +51,19 @@ func debug() {
found.AppendByGoPath(repo) found.AppendByGoPath(repo)
} }
tmp = fmt.Sprintf("writable (%d)", found.Len()) tmp := fmt.Sprintf("writable (%d)", found.Len())
me.repoWritableB.SetLabel(tmp) me.repoWritableB.SetLabel(tmp)
}
if me.repoDirtyB != nil {
doCheckDirtyAndConfigSave() doCheckDirtyAndConfigSave()
found = findDirty() found := findDirty()
tmp = fmt.Sprintf("dirty (%d)", found.Len()) tmp := fmt.Sprintf("dirty (%d)", found.Len())
me.repoDirtyB.SetLabel(tmp) me.repoDirtyB.SetLabel(tmp)
}
log.Printf("finished a forge scan here in (%s)\n", shell.FormatDuration(time.Since(now))) log.Printf("finished a forge scan here in (%s)\n", shell.FormatDuration(time.Since(now)))
time.Sleep(90 * time.Second) time.Sleep(90 * time.Second)
} }
} }
@ -210,6 +221,109 @@ func drawWindow(win *gadgets.BasicWindow) {
grid.NewButton("git pull", func() { grid.NewButton("git pull", func() {
log.Info("todo: run git pull on each repo") 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() grid.NextRow()
@ -270,121 +384,6 @@ func drawWindow(win *gadgets.BasicWindow) {
makeStandardReposWindow("All repos", me.found) 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 // sets the text in the labels in the window
@ -425,9 +424,11 @@ func forgeSwitchMode(newMode forgepb.ForgeMode) {
me.modeUserW.Enable() me.modeUserW.Enable()
} }
/*
if me.forge.Config.Mode != forgepb.ForgeMode_USER { if me.forge.Config.Mode != forgepb.ForgeMode_USER {
doDisableUserW() doDisableUserW()
} }
*/
me.forge.SetConfigSave(true) me.forge.SetConfigSave(true)
me.forge.ConfigSave() me.forge.ConfigSave()