From 4814a02927ba9490f58ed1c0b043b3ee8e853752 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Thu, 29 Sep 2022 11:13:55 +0000 Subject: allow direct invocation of startCbinary --- client/go/script-utils/main.go | 7 +++--- client/go/script-utils/startcbinary/cmd.go | 26 +++++++++++++++++++--- .../go/script-utils/startcbinary/startcbinary.go | 6 +++-- 3 files changed, 31 insertions(+), 8 deletions(-) (limited to 'client/go/script-utils') diff --git a/client/go/script-utils/main.go b/client/go/script-utils/main.go index 66fee5fba28..189140158ae 100644 --- a/client/go/script-utils/main.go +++ b/client/go/script-utils/main.go @@ -30,9 +30,7 @@ func main() { _ = vespa.FindHome() switch action { case "start-c-binary": - if !startcbinary.Run(os.Args[1:]) { - os.Exit(1) - } + os.Exit(startcbinary.Run(os.Args[1:])) case "export-env": vespa.ExportDefaultEnvToSh() case "security-env": @@ -59,6 +57,9 @@ func main() { cobra := clusterstate.NewSetNodeStateCmd() cobra.Execute() default: + if startcbinary.IsCandidate(os.Args[0]) { + os.Exit(startcbinary.Run(os.Args)) + } fmt.Fprintf(os.Stderr, "unknown action '%s'\n", action) fmt.Fprintln(os.Stderr, "actions: export-env, ipv6-only, security-env") fmt.Fprintln(os.Stderr, "(also: vespa-deploy, vespa-logfmt)") diff --git a/client/go/script-utils/startcbinary/cmd.go b/client/go/script-utils/startcbinary/cmd.go index 49bc2c8aedc..05d3d1d6c79 100644 --- a/client/go/script-utils/startcbinary/cmd.go +++ b/client/go/script-utils/startcbinary/cmd.go @@ -4,15 +4,19 @@ package startcbinary import ( + "os" + "strings" + "github.com/vespa-engine/vespa/client/go/trace" + "github.com/vespa-engine/vespa/client/go/util" "github.com/vespa-engine/vespa/client/go/vespa" ) -func Run(args []string) bool { - trace.AdjustVerbosity(1) +func Run(args []string) int { + trace.AdjustVerbosity(0) if len(args) < 1 { trace.Warning("missing program argument") - return false + return 1 } spec := ProgSpec{ Program: args[0], @@ -22,3 +26,19 @@ func Run(args []string) bool { vespa.LoadDefaultEnv() return startCbinary(spec) } + +func IsCandidate(program string) bool { + binary := program + "-bin" + if strings.Contains(binary, "/") { + return util.IsRegularFile(binary) + } else { + path := strings.Split(os.Getenv(ENV_PATH), ":") + for _, dir := range path { + fn := dir + "/" + binary + if util.IsRegularFile(fn) { + return true + } + } + } + return false +} diff --git a/client/go/script-utils/startcbinary/startcbinary.go b/client/go/script-utils/startcbinary/startcbinary.go index 5098056ee93..54b92d3ef06 100644 --- a/client/go/script-utils/startcbinary/startcbinary.go +++ b/client/go/script-utils/startcbinary/startcbinary.go @@ -11,7 +11,7 @@ import ( "github.com/vespa-engine/vespa/client/go/trace" ) -func startCbinary(spec ProgSpec) bool { +func startCbinary(spec ProgSpec) int { spec.configureCommonEnv() spec.configurePath() spec.configureTuning() @@ -23,8 +23,10 @@ func startCbinary(spec ProgSpec) bool { err := spec.run() if err != nil { fmt.Fprintln(os.Stderr, err) + return 1 + } else { + return 0 } - return err == nil } func (spec *ProgSpec) run() error { -- cgit v1.2.3