diff options
| author | Jeff Carr <[email protected]> | 2025-10-17 14:58:05 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-17 14:58:05 -0500 |
| commit | 9b1665a6ee7ec182d55b781eac4adea0c29910d8 (patch) | |
| tree | bfd8b1838bc60336d260484a1de1fbbc7fbaf72c /doGenerate.go | |
| parent | 0eaa9d0408d07b1c8c5214775ebb942dc210002b (diff) | |
good deal
Diffstat (limited to 'doGenerate.go')
| -rw-r--r-- | doGenerate.go | 84 |
1 files changed, 66 insertions, 18 deletions
diff --git a/doGenerate.go b/doGenerate.go index 794a26c..c3ee7d8 100644 --- a/doGenerate.go +++ b/doGenerate.go @@ -15,6 +15,22 @@ import ( "go.wit.com/log" ) +func safeRun(repo *gitpb.Repo, cmd []string) error { + if argv.Verbose { + _, err := shell.RunVerbose(cmd) + if err != nil { + return err + } + } else { + log.Info("Running:", cmd) + r := shell.Run(cmd) + if r.Error != nil { + return r.Error + } + } + return nil +} + func smartAutogen(repo *gitpb.Repo) error { os.Chdir(repo.FullPath) @@ -22,12 +38,34 @@ func smartAutogen(repo *gitpb.Repo) error { files, err := filepath.Glob(globPattern) if err != nil { log.Info("glob error", err, files) + return err } for _, filename := range files { cmd := []string{"autogenpb", "--proto", filename} - shell.RunVerbose(cmd) + err := safeRun(repo, cmd) + if err != nil { + return err + } + } + return nil +} + +func smartAutogenClean(repo *gitpb.Repo) error { + os.Chdir(repo.FullPath) + + globPattern := "*.pb.go" + files, err := filepath.Glob(globPattern) + if err != nil { + log.Info("glob error", err, files) + return err + } + cmd := []string{"rm"} + cmd = append(cmd, files...) + err = safeRun(repo, cmd) + if err != nil { + return err } - return err + return nil } // so don't delete them @@ -35,30 +73,40 @@ func doGenerate() (string, error) { // var s string // var err error - if argv.Generate.Make != nil { - pfile, _ := resources.ReadFile("resources/generate") - for _, namespace := range strings.Split(string(pfile), "\n") { - namespace = strings.TrimSpace(namespace) - if namespace == "" { - continue - } - if strings.HasPrefix(namespace, "#") { - continue - } - log.Info("LINE:", namespace) + pfile, _ := resources.ReadFile("resources/generate") + for _, namespace := range strings.Split(string(pfile), "\n") { + namespace = strings.TrimSpace(namespace) + if namespace == "" { + continue + } + if strings.HasPrefix(namespace, "#") { + continue + } - // helps run 'go generate' in a particular repo - found := me.forge.Repos.FindByNamespace(namespace) - if found == nil { + // helps run 'go generate' in a particular repo + found := me.forge.Repos.FindByNamespace(namespace) + if found == nil { + if argv.Generate.Strict { return "", fmt.Errorf("unknown namespace %s", namespace) } + log.Info("missing namespace:", namespace) + continue + } + log.Info("Repo found:", found.FullPath) + if argv.Generate.Make != nil { err := smartAutogen(found) if err != nil { return "autogen failed: " + namespace, err } + } else if argv.Generate.Clean != nil { + err := smartAutogenClean(found) + if err != nil { + return "autogen failed: " + namespace, err + } + } else { + return "generate didn't run", errors.New("no subcommand chosen") } - return "generate worked", nil } - return "generate didn't run", errors.New("no subcommand chosen") + return "generate worked", nil } |
