diff options
Diffstat (limited to 'doGenerate.go')
| -rw-r--r-- | doGenerate.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/doGenerate.go b/doGenerate.go new file mode 100644 index 0000000..794a26c --- /dev/null +++ b/doGenerate.go @@ -0,0 +1,64 @@ +// Copyright 2017-2025 WIT.COM Inc. All rights reserved. +// Use of this source code is governed by the GPL 3.0 + +package main + +import ( + "errors" + "fmt" + "os" + "path/filepath" + "strings" + + "go.wit.com/lib/gui/shell" + "go.wit.com/lib/protobuf/gitpb" + "go.wit.com/log" +) + +func smartAutogen(repo *gitpb.Repo) error { + os.Chdir(repo.FullPath) + + globPattern := "*.proto" + files, err := filepath.Glob(globPattern) + if err != nil { + log.Info("glob error", err, files) + } + for _, filename := range files { + cmd := []string{"autogenpb", "--proto", filename} + shell.RunVerbose(cmd) + } + return err +} + +// so don't delete them +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) + + // helps run 'go generate' in a particular repo + found := me.forge.Repos.FindByNamespace(namespace) + if found == nil { + return "", fmt.Errorf("unknown namespace %s", namespace) + } + err := smartAutogen(found) + if err != nil { + return "autogen failed: " + namespace, err + } + } + return "generate worked", nil + } + + return "generate didn't run", errors.New("no subcommand chosen") +} |
