summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-11-02 08:51:10 -0600
committerJeff Carr <[email protected]>2025-11-02 08:51:10 -0600
commit5d138b2603870fb816f5c89a3fa02f6bf3780e94 (patch)
tree286d7e76eca63c21aa173dd9296d3d1b0e709830
parent8c1eea72a59ea1d75b6e781f4bc87e328f6336a7 (diff)
smarter doDev()
-rw-r--r--Makefile2
-rw-r--r--doDev.go33
-rw-r--r--doVerifyNamespace.go59
-rw-r--r--main.go12
-rw-r--r--subCommand.go22
5 files changed, 61 insertions, 67 deletions
diff --git a/Makefile b/Makefile
index 76e3642..172f6a1 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ BUILDTIME = $(shell date +%s)
# make andlabs # try the andlabs gui plugin (uses GTK)
default: install
- forge --verbose
+ # forge --verbose
redo: clean
forge generate clean
diff --git a/doDev.go b/doDev.go
index a5ac857..48f0597 100644
--- a/doDev.go
+++ b/doDev.go
@@ -3,8 +3,37 @@
package main
+import "go.wit.com/lib/env"
+
// so don't delete them
func doDev() (string, error) {
+ var s string
+ var err error
+
+ env.PrintTable()
+
+ if env.Verbose() {
+ matchModeDirs()
+ }
+
+ if argv.Dev.Fixer != nil {
+ s, err = doFix(argv.Dev.Fixer)
+ return s, err
+ }
+
+ if argv.Dev.Stats != nil {
+ s, err = doStats(argv.Dev.Stats)
+ return s, err
+ }
+ if argv.Dev.Namespace != nil {
+ s, err = doVerifyNamespace()
+ return s, err
+ }
+ if argv.Dev.GoWork != nil {
+ s, err = doGoWork()
+ return s, err
+ }
+
if argv.Dev.Install != nil {
if err := doInstall(); err != nil {
return "install failed", err
@@ -18,5 +47,7 @@ func doDev() (string, error) {
}
return "build ok", nil
}
- return "todo: do something here", nil
+
+ footer := me.forge.Repos.PrintDefaultTB()
+ return "jwc " + footer, nil
}
diff --git a/doVerifyNamespace.go b/doVerifyNamespace.go
index b3a6820..cc42108 100644
--- a/doVerifyNamespace.go
+++ b/doVerifyNamespace.go
@@ -5,6 +5,7 @@ package main
import (
"errors"
+ "fmt"
"path/filepath"
"go.wit.com/lib/env"
@@ -12,54 +13,34 @@ import (
"go.wit.com/log"
)
-func cleanNamespace(r *gitpb.Repo) string {
+func doCleanNamespace(r *gitpb.Repo) error {
// check for GO repos
gowork := env.Get("gopath")
// todo: detect if using go.work file
newpath, err := filepath.Rel(gowork, r.FullPath)
- // log.Info("cleanNamespace()", newpath, gowork, "is gowork. fullpath:", r.FullPath)
- if err == nil {
- // log.Info("cleanNamespace returned", newpath)
- // relative path to gosrc or gowork is the namespace
- return newpath
+ if err != nil {
+ log.Info("cleanNamespace got err", newpath, err)
+ // check for other stuff. use the URLs
+ return err
}
- log.Info("cleanNamespace got err", newpath, err)
- // check for other stuff. use the URLs
- return ""
+ if newpath == r.Namespace {
+ // namespace was already set right
+ return nil
+ }
+ r.Namespace = newpath
+ err = errors.New("namepace changed")
+ s := fmt.Sprintf("old(%s), new(%s)", r.Namespace, newpath)
+ return errors.Join(errors.New(s), err)
}
// checks to see if the r.Namespace seems right
func doVerifyNamespace() (string, error) {
- var s string = "doVerifyNamespace()"
- var err error
- var counter int
- for r := range me.forge.Repos.IterAll() {
- newpath := cleanNamespace(r)
- if newpath == "" {
- // log.Info("didn't work", r.Namespace, "to", newpath)
- // didn't work
- } else if newpath == r.Namespace {
- // already good namespace.
- continue
- } else if newpath != r.Namespace {
- counter += 1
- log.Info("Changed", r.FullPath, "to", newpath)
- r.Namespace = newpath
- continue
- }
- counter += 1
- log.Info("cleanNamespace() didn't match", r.Namespace)
- }
- if counter != 0 {
- err = errors.New(log.Sprintf("%d namespaces were invalid", counter))
- }
-
- if env.True("DryRun") {
- return s, err
- }
- if counter != 0 {
+ fixed := me.forge.RunOnRepos(me.forge.Repos, doCleanNamespace)
+ if fixed.Len() != 0 {
+ fixed = fixed.SortActual()
+ footer := me.forge.PrintDefaultTB(fixed)
me.forge.Repos.SaveVerbose()
+ return "changed namespaces: " + footer, nil
}
-
- return s, err
+ return "no namespaces changed", nil
}
diff --git a/main.go b/main.go
index 41c4ce9..49eefc9 100644
--- a/main.go
+++ b/main.go
@@ -8,7 +8,6 @@ package main
import (
"embed"
- "go.wit.com/lib/env"
"go.wit.com/lib/protobuf/argvpb"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/log"
@@ -51,9 +50,14 @@ func main() {
log.Printf("forge failure on Init err=(%v)\n", err)
argvpb.BadExit("WTF", err)
}
- if env.Verbose() {
- env.PrintTable()
- matchModeDirs()
+
+ // allow Dev subcommands to run before the normal flow of the application
+ if argv.Dev != nil {
+ s, err = doDev()
+ if err != nil {
+ argvpb.BadExit(s, err)
+ }
+ argvpb.GoodExit(s)
}
if me.forge.IsModeUnknown() || me.forge.IsModeNewUser() {
diff --git a/subCommand.go b/subCommand.go
index 4d4d4e0..723b934 100644
--- a/subCommand.go
+++ b/subCommand.go
@@ -19,28 +19,6 @@ func doSubcommand() (string, error) {
s, err = doConfig()
}
- if argv.Dev != nil {
- if argv.Dev.Fixer != nil {
- s, err = doFix(argv.Dev.Fixer)
- return s, err
- }
-
- if argv.Dev.Stats != nil {
- s, err = doStats(argv.Dev.Stats)
- return s, err
- }
- if argv.Dev.Namespace != nil {
- s, err = doVerifyNamespace()
- return s, err
- }
- if argv.Dev.GoWork != nil {
- s, err = doGoWork()
- return s, err
- }
-
- s, err = doDev()
- }
-
if argv.Clean != nil {
s, err = doClean()
}