summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doCheckout.go7
-rw-r--r--doGui.go10
-rw-r--r--windowModeMaster.go86
3 files changed, 101 insertions, 2 deletions
diff --git a/doCheckout.go b/doCheckout.go
index fdd5edb..220ea22 100644
--- a/doCheckout.go
+++ b/doCheckout.go
@@ -9,6 +9,7 @@ import (
"time"
"go.wit.com/lib/gui/shell"
+ "go.wit.com/lib/protobuf/forgepb"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
@@ -292,14 +293,20 @@ func doCheckoutShared() error {
func doCheckout() error {
if argv.Checkout.User != nil {
me.argvCheckoutUser = true
+ me.forge.Config.Mode = forgepb.ForgeMode_USER
+ me.forge.Config.ConfigSave()
}
if argv.Checkout.Devel != nil {
me.argvCheckoutDevel = true
+ me.forge.Config.Mode = forgepb.ForgeMode_DEVEL
+ me.forge.Config.ConfigSave()
}
if argv.Checkout.Master != nil {
me.argvCheckoutMaster = true
+ me.forge.Config.Mode = forgepb.ForgeMode_MASTER
+ me.forge.Config.ConfigSave()
}
if err := doCheckoutShared(); err != nil {
badExit(err)
diff --git a/doGui.go b/doGui.go
index 076d87d..46eed56 100644
--- a/doGui.go
+++ b/doGui.go
@@ -184,9 +184,16 @@ func drawWindow(win *gadgets.GenericWindow) {
groupM := win.Stack.NewGroup("Mode Windows")
gridM := groupM.RawGrid()
+
+ var releaseWin *gadgets.GenericWindow
me.modeReleaseW = gridM.NewButton("Release Window", func() {
log.Info("todo: move releaser here")
log.Info("for now, run guireleaser")
+ if releaseWin != nil {
+ releaseWin.Toggle()
+ return
+ }
+ releaseWin = makeModeMasterWin()
})
me.modeReleaseW.Disable()
@@ -463,8 +470,7 @@ func forgeSwitchMode(newMode forgepb.ForgeMode) {
me.forge.Config.Mode = newMode
forgeVerifyGuiState() // update the button states
- me.forge.SetConfigSave(true)
- me.forge.ConfigSave() // todo, only save the forge config
+ me.forge.Config.ConfigSave()
}
func doDisableUserW() {
diff --git a/windowModeMaster.go b/windowModeMaster.go
new file mode 100644
index 0000000..e01752b
--- /dev/null
+++ b/windowModeMaster.go
@@ -0,0 +1,86 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/log"
+)
+
+// An app to submit patches for the 30 GO GUI repos
+
+func makeModeMasterWin() *gadgets.GenericWindow {
+ win := gadgets.NewGenericWindow("Release", "tools")
+ grid := win.Group.RawGrid()
+
+ checkout := grid.NewButton("git checkout master", func() {
+ win.Disable()
+ defer win.Enable()
+ })
+ gitpull := grid.NewButton("git pull", func() {
+ win.Disable()
+ defer win.Enable()
+ })
+ grid.NextRow()
+
+ cleanUser := grid.NewButton("Clean user branches", func() {
+ win.Disable()
+ defer win.Enable()
+ if err := doCleanUser(); err != nil {
+ log.Info("Clean user branches failed", err)
+ }
+ })
+
+ cleanDevel := grid.NewButton("Clean devel branches", func() {
+ win.Disable()
+ defer win.Enable()
+ if err := doCleanDevel(); err != nil {
+ log.Info("Clean devel branches failed", err)
+ }
+ })
+ grid.NextRow()
+
+ f := func() {
+ total, count, nope, err := IsEverythingOnMaster()
+ if nope == 0 {
+ checkout.Disable()
+ gitpull.Enable()
+ } else {
+ log.Printf("Master branch check. %d total repos. (%d ok) (%d not on master branch) err=%v\n", total, count, nope, err)
+ checkout.Enable()
+ }
+
+ var localuser bool // are there still local user branches
+ var localdevel bool // are there still local devel branches
+
+ all := me.forge.Repos.SortByFullPath()
+ for all.Scan() {
+ repo := all.Next()
+ if repo.IsLocalBranch(repo.GetUserBranchName()) {
+ localuser = true
+ }
+ if repo.IsLocalBranch(repo.GetDevelBranchName()) {
+ localdevel = true
+ }
+ }
+ if localuser {
+ cleanUser.Enable()
+ } else {
+ cleanUser.Disable()
+ }
+ if localdevel {
+ cleanDevel.Enable()
+ } else {
+ cleanDevel.Disable()
+ }
+ }
+
+ grid.NewButton("check repo state", func() {
+ win.Disable()
+ defer win.Enable()
+
+ f()
+ })
+ return win
+}