diff options
Diffstat (limited to 'protoc.go')
| -rw-r--r-- | protoc.go | 31 |
1 files changed, 30 insertions, 1 deletions
@@ -4,10 +4,12 @@ package main import ( "errors" + "fmt" "os" "path/filepath" "strings" + "github.com/go-cmd/cmd" "go.wit.com/lib/gui/shell" "go.wit.com/log" ) @@ -88,6 +90,33 @@ func protocBuild(names map[string]string) error { for i, s := range cmd { log.Info("\t", i, s) } - shell.PathRun(argv.GoSrc, cmd) + return runprotoc(argv.GoSrc, cmd) +} + +func runprotoc(pwd string, mycmd []string) error { + result := shell.PathRun(argv.GoSrc, mycmd) + if result.Error != nil { + return userNotes(result) + } + if result.Exit != 0 { + return userNotes(result) + } return nil } + +func userNotes(result cmd.Status) error { + log.Info("protoc failed", result.Cmd, "with", result.Exit) + for _, line := range result.Stdout { + log.Info("STDOUT:", line) + } + for _, line := range result.Stderr { + log.Info("STDERR:", line) + } + log.Info("This is likely because you don't have protoc and protoc-gen-go installed") + log.Info("") + log.Info("On debian, you can:") + log.Info(" apt install protobuf-compiler # for protoc") + log.Info(" apt install protoc-gen-go # for protoc-gen-go") + log.Info("") + return fmt.Errorf("protoc failed with %d %v", result.Exit, result.Error) +} |
