aboutsummaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2022-10-26 08:43:12 +0000
committerArne Juul <arnej@yahooinc.com>2022-10-26 08:52:47 +0000
commitc4dcca93bcc4fe1f9b53cca02d5d998c22d62ad1 (patch)
tree4c27ec082beacf8948d4a4d4ec82bc4beed10b10 /client
parentd687dec097c4c5da0ee2a499e9008444ffe74968 (diff)
use fallbackVar, and fix bug
Diffstat (limited to 'client')
-rw-r--r--client/go/vespa/load_env.go9
-rw-r--r--client/go/vespa/load_env_test.go8
2 files changed, 13 insertions, 4 deletions
diff --git a/client/go/vespa/load_env.go b/client/go/vespa/load_env.go
index d606bf3543f..1c1a05fef89 100644
--- a/client/go/vespa/load_env.go
+++ b/client/go/vespa/load_env.go
@@ -20,6 +20,8 @@ func LoadDefaultEnv() error {
func ExportDefaultEnvToSh() error {
holder := newShellEnvExporter()
err := loadDefaultEnvTo(holder)
+ holder.fallbackVar("VESPA_HOME", FindHome())
+ holder.fallbackVar("VESPA_USER", FindVespaUser())
holder.dump()
return err
}
@@ -151,9 +153,10 @@ func newShellEnvExporter() *shellEnvExporter {
}
}
func (p *shellEnvExporter) fallbackVar(varName, varVal string) {
- if os.Getenv(varName) == "" || p.unsetVars[varName] != "" {
- delete(p.unsetVars, varName)
- p.exportVars[varName] = shellQuote(varVal)
+ if p.exportVars[varName] == "" {
+ if os.Getenv(varName) == "" || os.Getenv(varName) == varVal || p.unsetVars[varName] != "" {
+ p.overrideVar(varName, varVal)
+ }
}
}
func (p *shellEnvExporter) overrideVar(varName, varVal string) {
diff --git a/client/go/vespa/load_env_test.go b/client/go/vespa/load_env_test.go
index 41373f7ab82..e48a950b0b8 100644
--- a/client/go/vespa/load_env_test.go
+++ b/client/go/vespa/load_env_test.go
@@ -32,6 +32,7 @@ override VESPA_FOO "new foo"
fallback VESPA_BAR "new bar"
fallback VESPA_QUUX "new quux"
+fallback VESPA_QUUX "bad quux"
unset VESPA_FOOBAR
`)
@@ -120,14 +121,18 @@ func TestExportEnv(t *testing.T) {
t.Setenv("VESPA_FOO", "was foo")
t.Setenv("VESPA_BAR", "was bar")
t.Setenv("VESPA_FOOBAR", "foobar")
+ t.Setenv("VESPA_ALREADY", "already")
t.Setenv("VESPA_BARFOO", "was barfoo")
os.Unsetenv("VESPA_QUUX")
setup(t, `
# vespa env vars file
override VESPA_FOO "newFoo1"
+fallback VESPA_FOO "bad foo"
fallback VESPA_BAR "new bar"
fallback VESPA_QUUX "new quux"
+fallback VESPA_QUUX "bad quux"
+fallback VESPA_ALREADY "already"
unset VESPA_FOOBAR
unset VESPA_BARFOO
@@ -143,13 +148,14 @@ unset XYZ
assert.Equal(t, "", holder.exportVars["VESPA_BAR"])
assert.Equal(t, "'new quux'", holder.exportVars["VESPA_QUUX"])
assert.Equal(t, `'new'\''b<a>r'\''foo'`, holder.exportVars["VESPA_BARFOO"])
+ assert.Equal(t, "already", holder.exportVars["VESPA_ALREADY"])
// unsets:
assert.Equal(t, "", holder.exportVars["VESPA_FOOBAR"])
assert.Equal(t, "unset", holder.unsetVars["VESPA_FOOBAR"])
assert.Equal(t, "", holder.exportVars["XYZ"])
assert.Equal(t, "unset", holder.unsetVars["XYZ"])
// nothing extra allowed:
- assert.Equal(t, 3, len(holder.exportVars))
+ assert.Equal(t, 4, len(holder.exportVars))
assert.Equal(t, 2, len(holder.unsetVars))
// run it
err = ExportDefaultEnvToSh()