mirror of
https://github.com/helm/helm.git
synced 2026-03-03 22:12:05 -05:00
Merge pull request #6244 from waveywaves/feature/helmenv
(feature/helm-env) `helm env`
This commit is contained in:
commit
ec31f13ee9
3 changed files with 112 additions and 12 deletions
62
cmd/helm/env.go
Normal file
62
cmd/helm/env.go
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
Copyright The Helm Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
|
||||
"helm.sh/helm/pkg/cli"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"helm.sh/helm/cmd/helm/require"
|
||||
)
|
||||
|
||||
var (
|
||||
envHelp = `
|
||||
Env prints out all the environment information in use by Helm.
|
||||
`
|
||||
)
|
||||
|
||||
func newEnvCmd(out io.Writer) *cobra.Command {
|
||||
o := &envOptions{}
|
||||
o.settings = cli.New()
|
||||
|
||||
cmd := &cobra.Command{
|
||||
Use: "env",
|
||||
Short: "Helm client environment information",
|
||||
Long: envHelp,
|
||||
Args: require.NoArgs,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return o.run(out)
|
||||
},
|
||||
}
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
type envOptions struct {
|
||||
settings *cli.EnvSettings
|
||||
}
|
||||
|
||||
func (o *envOptions) run(out io.Writer) error {
|
||||
for _, e := range o.settings.EnvironmentVariables {
|
||||
fmt.Printf("%s=\"%s\" \n", e.Name, e.Value)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
@ -188,6 +188,7 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string
|
|||
newUpgradeCmd(actionConfig, out),
|
||||
|
||||
newCompletionCmd(out),
|
||||
newEnvCmd(out),
|
||||
newPluginCmd(out),
|
||||
newVersionCmd(out),
|
||||
|
||||
|
|
|
|||
|
|
@ -23,11 +23,13 @@ These dependencies are expressed as interfaces so that alternate implementations
|
|||
package cli
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
|
||||
"helm.sh/helm/pkg/helmpath"
|
||||
"helm.sh/helm/pkg/helmpath/xdg"
|
||||
)
|
||||
|
||||
// EnvSettings describes all of the environment settings.
|
||||
|
|
@ -49,15 +51,26 @@ type EnvSettings struct {
|
|||
RepositoryCache string
|
||||
// PluginsDirectory is the path to the plugins directory.
|
||||
PluginsDirectory string
|
||||
|
||||
// Environment Variables Store
|
||||
EnvironmentVariables []EnvironmentVariable
|
||||
}
|
||||
|
||||
type EnvironmentVariable struct {
|
||||
Name string
|
||||
Value string
|
||||
}
|
||||
|
||||
func New() *EnvSettings {
|
||||
return &EnvSettings{
|
||||
PluginsDirectory: helmpath.DataPath("plugins"),
|
||||
RegistryConfig: helmpath.ConfigPath("registry.json"),
|
||||
RepositoryConfig: helmpath.ConfigPath("repositories.yaml"),
|
||||
RepositoryCache: helmpath.CachePath("repository"),
|
||||
envSettings := EnvSettings{
|
||||
PluginsDirectory: helmpath.DataPath("plugins"),
|
||||
RegistryConfig: helmpath.ConfigPath("registry.json"),
|
||||
RepositoryConfig: helmpath.ConfigPath("repositories.yaml"),
|
||||
RepositoryCache: helmpath.CachePath("repository"),
|
||||
EnvironmentVariables: []EnvironmentVariable{},
|
||||
}
|
||||
envSettings.setHelmEnvVars()
|
||||
return &envSettings
|
||||
}
|
||||
|
||||
// AddFlags binds flags to the given flagset.
|
||||
|
|
@ -72,13 +85,6 @@ func (s *EnvSettings) AddFlags(fs *pflag.FlagSet) {
|
|||
fs.StringVar(&s.RepositoryCache, "repository-cache", s.RepositoryCache, "path to the file containing cached repository indexes")
|
||||
}
|
||||
|
||||
// Init sets values from the environment.
|
||||
func (s *EnvSettings) Init(fs *pflag.FlagSet) {
|
||||
for name, envar := range envMap {
|
||||
setFlagFromEnv(name, envar, fs)
|
||||
}
|
||||
}
|
||||
|
||||
// envMap maps flag names to envvars
|
||||
var envMap = map[string]string{
|
||||
"debug": "HELM_DEBUG",
|
||||
|
|
@ -95,3 +101,34 @@ func setFlagFromEnv(name, envar string, fs *pflag.FlagSet) {
|
|||
fs.Set(name, v)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *EnvSettings) setHelmEnvVars() {
|
||||
for key, val := range map[string]string{
|
||||
"HELM_HOME": helmpath.DataPath(),
|
||||
"HELM_PATH_STARTER": helmpath.DataPath("starters"),
|
||||
"HELM_DEBUG": fmt.Sprint(s.Debug),
|
||||
"HELM_REGISTRY_CONFIG": s.RegistryConfig,
|
||||
"HELM_PATH_REPOSITORY_FILE": s.RepositoryConfig,
|
||||
"HELM_PATH_REPOSITORY_CACHE": s.RepositoryCache,
|
||||
"HELM_PLUGIN": s.PluginsDirectory,
|
||||
xdg.CacheHomeEnvVar: helmpath.CachePath(),
|
||||
xdg.ConfigHomeEnvVar: helmpath.ConfigPath(),
|
||||
xdg.DataHomeEnvVar: helmpath.DataPath(),
|
||||
} {
|
||||
if eVal := os.Getenv(key); len(eVal) > 0 {
|
||||
val = eVal
|
||||
}
|
||||
s.EnvironmentVariables = append(s.EnvironmentVariables,
|
||||
EnvironmentVariable{
|
||||
Name: key,
|
||||
Value: val,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Init sets values from the environment.
|
||||
func (s *EnvSettings) Init(fs *pflag.FlagSet) {
|
||||
for name, envar := range envMap {
|
||||
setFlagFromEnv(name, envar, fs)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue