summaryrefslogtreecommitdiff
path: root/doGenerate.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-17 14:58:05 -0500
committerJeff Carr <[email protected]>2025-10-17 14:58:05 -0500
commit9b1665a6ee7ec182d55b781eac4adea0c29910d8 (patch)
treebfd8b1838bc60336d260484a1de1fbbc7fbaf72c /doGenerate.go
parent0eaa9d0408d07b1c8c5214775ebb942dc210002b (diff)
good deal
Diffstat (limited to 'doGenerate.go')
-rw-r--r--doGenerate.go84
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
}