// 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 } } }) }) 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 }