From 6bb2b972b4dff09d55c77341ccc06afb30a5026f Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 18 Dec 2024 02:54:14 -0600 Subject: [PATCH] fix path. add notes to help install protoc --- main.go | 5 ++++- protoc.go | 31 ++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 064953a..b52f579 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ package main import ( "errors" "os" + "path/filepath" "strings" "github.com/alexflint/go-arg" @@ -51,8 +52,10 @@ func main() { os.Exit(-1) } + // todo, look for go.work files if argv.GoSrc == "" { - argv.GoSrc = "/home/jcarr/go/src" + homeDir, _ := os.UserHomeDir() + argv.GoSrc = filepath.Join(homeDir, "go/src") } if argv.GoPath == "" { diff --git a/protoc.go b/protoc.go index 53955e3..1214e7c 100644 --- a/protoc.go +++ b/protoc.go @@ -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) +}