code re-arrange
This commit is contained in:
parent
cc8800bf60
commit
6d62858d69
4
doGui.go
4
doGui.go
|
@ -214,7 +214,8 @@ func drawWindow(win *gadgets.GenericWindow) {
|
||||||
})
|
})
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var reposWin *gadgets.GenericWindow
|
// var reposWin *gadgets.GenericWindow
|
||||||
|
var reposWin *stdReposTableWin
|
||||||
me.reposWinB = gridM.NewButton("Repos", func() {
|
me.reposWinB = gridM.NewButton("Repos", func() {
|
||||||
if reposWin != nil {
|
if reposWin != nil {
|
||||||
reposWin.Toggle()
|
reposWin.Toggle()
|
||||||
|
@ -308,6 +309,7 @@ func forgeSwitchMode(newMode forgepb.ForgeMode) {
|
||||||
// this is the magic that generates a window directly from the protocol buffer
|
// this is the magic that generates a window directly from the protocol buffer
|
||||||
func makeStandardReposGrid(pb *gitpb.Repos) *gitpb.ReposTable {
|
func makeStandardReposGrid(pb *gitpb.Repos) *gitpb.ReposTable {
|
||||||
t := pb.NewTable("testDirty")
|
t := pb.NewTable("testDirty")
|
||||||
|
t.NewUuid()
|
||||||
sf := t.AddStringFunc("repo", func(r *gitpb.Repo) string {
|
sf := t.AddStringFunc("repo", func(r *gitpb.Repo) string {
|
||||||
return r.GetGoPath()
|
return r.GetGoPath()
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,114 +0,0 @@
|
||||||
// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
|
|
||||||
// Use of this source code is governed by the GPL 3.0
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
// An app to submit patches for the 30 GO GUI repos
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go.wit.com/lib/debugger"
|
|
||||||
"go.wit.com/lib/gadgets"
|
|
||||||
"go.wit.com/log"
|
|
||||||
)
|
|
||||||
|
|
||||||
func makeHackModeWindow(win *gadgets.GenericWindow) {
|
|
||||||
group := win.Stack.NewGroup("This is a work in progress")
|
|
||||||
grid := group.RawGrid()
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
grid.NextRow()
|
|
||||||
|
|
||||||
group2 := win.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 := win.Stack.NewGroup("work in progress")
|
|
||||||
grid = group3.RawGrid()
|
|
||||||
|
|
||||||
grid.NewButton("forge ConfigSave()", func() {
|
|
||||||
me.forge.ConfigSave()
|
|
||||||
})
|
|
||||||
|
|
||||||
grid.NewButton("debugger()", func() {
|
|
||||||
debugger.DebugWindow()
|
|
||||||
})
|
|
||||||
}
|
|
160
windowRepos.go
160
windowRepos.go
|
@ -8,15 +8,39 @@ package main
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"go.wit.com/gui"
|
||||||
|
"go.wit.com/lib/debugger"
|
||||||
"go.wit.com/lib/gadgets"
|
"go.wit.com/lib/gadgets"
|
||||||
"go.wit.com/lib/protobuf/gitpb"
|
"go.wit.com/lib/protobuf/gitpb"
|
||||||
"go.wit.com/log"
|
"go.wit.com/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func makeReposWin() *gadgets.GenericWindow {
|
type stdReposTableWin struct {
|
||||||
|
sync.Mutex
|
||||||
|
win *gadgets.GenericWindow // the machines gui window
|
||||||
|
boxTB *gui.Node // the machines gui parent box widget
|
||||||
|
TB *gitpb.ReposTable // the gui table buffer
|
||||||
|
pb *gitpb.Repos // the current repos protobuf
|
||||||
|
update bool // if the window should be updated
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *stdReposTableWin) Toggle() {
|
||||||
|
if w == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if w.win == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
w.win.Toggle()
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeReposWin() *stdReposTableWin {
|
||||||
|
rwin := new(stdReposTableWin)
|
||||||
win := gadgets.NewGenericWindow("git repos", "All about git repos")
|
win := gadgets.NewGenericWindow("git repos", "All about git repos")
|
||||||
|
rwin.win = win
|
||||||
grid := win.Group.RawGrid()
|
grid := win.Group.RawGrid()
|
||||||
|
|
||||||
me.repoDirtyB = grid.NewButton("dirty", func() {
|
me.repoDirtyB = grid.NewButton("dirty", func() {
|
||||||
|
@ -161,9 +185,9 @@ func makeReposWin() *gadgets.GenericWindow {
|
||||||
log.Info("add a forge config window here")
|
log.Info("add a forge config window here")
|
||||||
})
|
})
|
||||||
|
|
||||||
win.Stack.NewGroup("misc (works in progress)")
|
win.Top.NewGroup("misc (works in progress)")
|
||||||
|
|
||||||
grid = win.Stack.RawGrid()
|
grid = win.Top.RawGrid()
|
||||||
var found *gitpb.Repos
|
var found *gitpb.Repos
|
||||||
var txt string
|
var txt string
|
||||||
|
|
||||||
|
@ -248,8 +272,13 @@ func makeReposWin() *gadgets.GenericWindow {
|
||||||
t.ShowTable()
|
t.ShowTable()
|
||||||
})
|
})
|
||||||
|
|
||||||
grid.NewButton("unknown branches", func() {
|
rwin.boxTB = win.Bottom.Box()
|
||||||
log.Info("unknown branches not done yet")
|
|
||||||
|
grid.NewButton("dirty on bottom", func() {
|
||||||
|
log.Info("try to show dirty repos on bottom")
|
||||||
|
found := findDirty()
|
||||||
|
rwin.doReposTable(found)
|
||||||
|
|
||||||
})
|
})
|
||||||
grid.NextRow()
|
grid.NextRow()
|
||||||
|
|
||||||
|
@ -269,7 +298,126 @@ func makeReposWin() *gadgets.GenericWindow {
|
||||||
grid.NextRow()
|
grid.NextRow()
|
||||||
|
|
||||||
makeHackModeWindow(win)
|
makeHackModeWindow(win)
|
||||||
return win
|
return rwin
|
||||||
|
}
|
||||||
|
|
||||||
|
// default window for active running droplets
|
||||||
|
func (rwin *stdReposTableWin) doReposTable(pb *gitpb.Repos) {
|
||||||
|
rwin.Lock()
|
||||||
|
defer rwin.Unlock()
|
||||||
|
if rwin.TB != nil {
|
||||||
|
rwin.TB.Delete()
|
||||||
|
rwin.TB = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
rwin.pb = pb
|
||||||
|
|
||||||
|
t := makeStandardReposGrid(pb)
|
||||||
|
t.SetParent(rwin.boxTB)
|
||||||
|
t.ShowTable()
|
||||||
|
rwin.TB = t
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeHackModeWindow(win *gadgets.GenericWindow) {
|
||||||
|
group := win.Top.NewGroup("This is a work in progress")
|
||||||
|
grid := group.RawGrid()
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
grid.NextRow()
|
||||||
|
|
||||||
|
group2 := win.Top.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 := win.Top.NewGroup("work in progress")
|
||||||
|
grid = group3.RawGrid()
|
||||||
|
|
||||||
|
grid.NewButton("forge ConfigSave()", func() {
|
||||||
|
me.forge.ConfigSave()
|
||||||
|
})
|
||||||
|
|
||||||
|
grid.NewButton("debugger()", func() {
|
||||||
|
debugger.DebugWindow()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func develBehindMasterProblem() *gitpb.Repos {
|
func develBehindMasterProblem() *gitpb.Repos {
|
||||||
|
|
Loading…
Reference in New Issue