124 lines
2.9 KiB
Go
124 lines
2.9 KiB
Go
// 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() *gadgets.GenericWindow {
|
|
win := gadgets.NewGenericWindow("git user branch / Hack Mode Window", "This is a work in progress")
|
|
grid := win.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
|
|
}
|
|
|
|
}
|
|
})
|
|
})
|
|
var problemsWin *repoProblemsWindow
|
|
grid.NewButton("Repo Problems", func() {
|
|
if problemsWin != nil {
|
|
problemsWin.Toggle()
|
|
return
|
|
}
|
|
problemsWin = makeRepoProblemsWindow()
|
|
})
|
|
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()
|
|
})
|
|
return win
|
|
}
|