diff options
Diffstat (limited to 'client/go/internal/admin/script-utils/startcbinary/cmd.go')
-rw-r--r-- | client/go/internal/admin/script-utils/startcbinary/cmd.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/client/go/internal/admin/script-utils/startcbinary/cmd.go b/client/go/internal/admin/script-utils/startcbinary/cmd.go new file mode 100644 index 00000000000..9580a9240bb --- /dev/null +++ b/client/go/internal/admin/script-utils/startcbinary/cmd.go @@ -0,0 +1,48 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Author: arnej + +package startcbinary + +import ( + "os" + "strings" + + "github.com/vespa-engine/vespa/client/go/internal/admin/envvars" + "github.com/vespa-engine/vespa/client/go/internal/admin/trace" + "github.com/vespa-engine/vespa/client/go/internal/util" + "github.com/vespa-engine/vespa/client/go/internal/vespa" +) + +func Run(args []string) int { + trace.AdjustVerbosity(0) + if len(args) < 1 { + trace.Warning("missing program argument") + return 1 + } + spec := NewProgSpec(args) + err := vespa.LoadDefaultEnv() + if err != nil { + util.JustExitWith(err) + } + hostname, err := vespa.FindOurHostname() + if err != nil { + trace.Warning("could not detect hostname:", err, "; using fallback:", hostname) + } + 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(envvars.PATH), ":") + for _, dir := range path { + fn := dir + "/" + binary + if util.IsRegularFile(fn) { + return true + } + } + } + return false +} |