summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2022-09-29 11:13:55 +0000
committerArne Juul <arnej@yahooinc.com>2022-09-29 12:19:21 +0000
commit4814a02927ba9490f58ed1c0b043b3ee8e853752 (patch)
tree94f4048b59e404fae574db4c07e1758602b016a4 /client
parentc54b9a640af6349d13226aef8da8c719df333b87 (diff)
allow direct invocation of startCbinary
Diffstat (limited to 'client')
-rw-r--r--client/go/script-utils/main.go7
-rw-r--r--client/go/script-utils/startcbinary/cmd.go26
-rw-r--r--client/go/script-utils/startcbinary/startcbinary.go6
3 files changed, 31 insertions, 8 deletions
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 {