summaryrefslogtreecommitdiff
path: root/doRebuild.go
diff options
context:
space:
mode:
Diffstat (limited to 'doRebuild.go')
-rw-r--r--doRebuild.go111
1 files changed, 111 insertions, 0 deletions
diff --git a/doRebuild.go b/doRebuild.go
new file mode 100644
index 0000000..0192cd7
--- /dev/null
+++ b/doRebuild.go
@@ -0,0 +1,111 @@
+// 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 (
+ "errors"
+ "os"
+
+ "go.wit.com/lib/fhelp"
+ "go.wit.com/lib/gui/shell"
+ "go.wit.com/log"
+)
+
+// download forge. A good way to check things work
+func doRebuild() (string, error) {
+ var s string
+ var err error
+
+ if argv.Rebuild.Forge != nil {
+ s, err = doRebuildForge()
+ }
+ return s, err
+}
+
+func doRebuildForge() (string, error) {
+ log.Info("download here")
+ if path, err := fhelp.CheckCmd("go-clone"); err != nil {
+ log.Info("go-clone missing", path, err)
+ cmd := []string{"go", "install", "go.wit.com/apps/go-clone@latest"}
+ shell.RunRealtime(cmd)
+ }
+ if _, err := fhelp.CheckCmd("autogenpb"); err != nil {
+ cmd := []string{"go", "install", "go.wit.com/apps/autogenpb@latest"}
+ shell.RunRealtime(cmd)
+ }
+ if _, err := fhelp.CheckCmd("go-mod-clean"); err != nil {
+ cmd := []string{"go", "install", "go.wit.com/apps/go-mod-clean@latest"}
+ shell.RunRealtime(cmd)
+ }
+ if path, err := fhelp.CheckCmd("go-clone"); err != nil {
+ log.Info("can't prep build. you probably need ~/go/bin in your PATH", path, err)
+ return "", errors.New("prep build failed")
+ }
+ var basecmd []string
+ var cmd []string
+ if me.forge.IsGoWork() {
+ log.Info("Using go.work directory")
+ basecmd = []string{"go-clone", "--work"}
+ } else {
+ basecmd = []string{"go-clone"}
+ }
+ // log.Info("Running:", cmd)
+ // shell.RunRealtime(cmd)
+
+ r := shell.Run([]string{"forge", "show"})
+ if r.Error != nil {
+ return "download go-mod-clean failed", r.Error
+ }
+
+ cmd = append(basecmd, "go.wit.com/apps/go-mod-clean")
+ log.Info("Running:", cmd)
+ r = shell.RunRealtime(cmd)
+ if r.Error != nil {
+ return "download go-mod-clean failed", r.Error
+ }
+
+ cmd = append(basecmd, "go.wit.com/apps/autogenpb")
+ log.Info("Running:", cmd)
+ r = shell.RunRealtime(cmd)
+ if r.Error != nil {
+ return "download autogenpb failed", r.Error
+ }
+
+ cmd = append(basecmd, "go.wit.com/apps/forge")
+ log.Info("Running:", cmd)
+ r = shell.RunRealtime(cmd)
+ if r.Error != nil {
+ me.sh.BadExit("download forge failed", r.Error)
+ }
+
+ cmd = append(basecmd, "go.wit.com/toolkits/gocui")
+ log.Info("Running:", cmd)
+ r = shell.RunRealtime(cmd)
+ if r.Error != nil {
+ me.sh.BadExit("download CUI GO plugin toolkit failed", r.Error)
+ }
+
+ cmd = append(basecmd, "go.wit.com/toolkits/andlabs")
+ log.Info("Running:", cmd)
+ r = shell.RunRealtime(cmd)
+ if r.Error != nil {
+ me.sh.BadExit("download GTK GO plugin toolkit failed", r.Error)
+ }
+
+ if (me.forge == nil) || (me.forge.Repos == nil) {
+ log.Info("RUN forge --rebuild again. it might work after a few tries")
+ return "forge is new. this may not work yet", errors.New("forge init not working yet")
+ }
+ repo := me.forge.Repos.FindByNamespace("go.wit.com/apps/forge")
+ if repo != nil {
+ r := shell.Run([]string{"forge", "show"})
+ return "failed the first go around. run it again. this feature is new", r.Error
+ }
+ // yay. it might work
+ os.Chdir(repo.FullPath)
+ r = shell.Run([]string{"make", "generate"})
+ return "make generate might have worked", r.Error
+}