fix(helm): support HELM_HOME during plugin loading

closes #2630
parent 76d3161e
...@@ -24,6 +24,7 @@ import ( ...@@ -24,6 +24,7 @@ import (
"strings" "strings"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/spf13/pflag"
helm_env "k8s.io/helm/pkg/helm/environment" helm_env "k8s.io/helm/pkg/helm/environment"
"k8s.io/helm/pkg/plugin" "k8s.io/helm/pkg/plugin"
...@@ -41,6 +42,16 @@ func loadPlugins(baseCmd *cobra.Command, out io.Writer) { ...@@ -41,6 +42,16 @@ func loadPlugins(baseCmd *cobra.Command, out io.Writer) {
return return
} }
// manually handel processing of HELM_HOME and --home
helmHome := "$HOME/.helm"
if h, ok := os.LookupEnv("HELM_HOME"); ok {
helmHome = h
}
fs := pflag.NewFlagSet("homer", pflag.ContinueOnError)
fs.StringVar((*string)(&settings.Home), "home", helmHome, "location of your Helm config. Overrides $HELM_HOME")
fs.Parse(os.Args)
found, err := findPlugins(settings.PluginDirs()) found, err := findPlugins(settings.PluginDirs())
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "failed to load plugins: %s", err) fmt.Fprintf(os.Stderr, "failed to load plugins: %s", err)
......
...@@ -64,12 +64,24 @@ func TestManuallyProcessArgs(t *testing.T) { ...@@ -64,12 +64,24 @@ func TestManuallyProcessArgs(t *testing.T) {
} }
// resetEnv sets an env var, and returns a defer function to reset the env
func resetEnv(name, val string) func() {
original, ok := os.LookupEnv(name)
os.Setenv(name, val)
if ok {
return func() { os.Setenv(name, original) }
}
return func() { os.Unsetenv(name) }
}
func TestLoadPlugins(t *testing.T) { func TestLoadPlugins(t *testing.T) {
// Set helm home to point to testdata // Set helm home to point to testdata
old := settings.Home old := settings.Home
settings.Home = "testdata/helmhome" settings.Home = "testdata/helmhome"
cleanup := resetEnv("HELM_HOME", settings.Home.String())
defer func() { defer func() {
settings.Home = old settings.Home = old
cleanup()
}() }()
hh := settings.Home hh := settings.Home
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment