summaryrefslogtreecommitdiff
path: root/doGenerate.go
diff options
context:
space:
mode:
Diffstat (limited to 'doGenerate.go')
-rw-r--r--doGenerate.go64
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")
+}