diff options
| author | Jeff Carr <[email protected]> | 2025-11-02 08:51:10 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-11-02 08:51:10 -0600 |
| commit | 5d138b2603870fb816f5c89a3fa02f6bf3780e94 (patch) | |
| tree | 286d7e76eca63c21aa173dd9296d3d1b0e709830 | |
| parent | 8c1eea72a59ea1d75b6e781f4bc87e328f6336a7 (diff) | |
smarter doDev()
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | doDev.go | 33 | ||||
| -rw-r--r-- | doVerifyNamespace.go | 59 | ||||
| -rw-r--r-- | main.go | 12 | ||||
| -rw-r--r-- | subCommand.go | 22 |
5 files changed, 61 insertions, 67 deletions
@@ -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 @@ -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 } @@ -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() } |
