diff --git a/pkg/karmadactl/util/apiclient/apiclient.go b/pkg/karmadactl/util/apiclient/apiclient.go index aa172e132..f99071450 100644 --- a/pkg/karmadactl/util/apiclient/apiclient.go +++ b/pkg/karmadactl/util/apiclient/apiclient.go @@ -10,6 +10,7 @@ import ( "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/util/homedir" aggregator "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset" + "k8s.io/utils/env" ) var ( @@ -30,12 +31,7 @@ var ( // 3. In your home directory as ~/.kube/config func KubeConfigPath(kubeconfigPath string) string { if kubeconfigPath == "" { - env := os.Getenv("KUBECONFIG") - if env != "" { - kubeconfigPath = env - } else { - kubeconfigPath = defaultKubeConfig - } + kubeconfigPath = env.GetString("KUBECONFIG", defaultKubeConfig) } return kubeconfigPath @@ -44,12 +40,7 @@ func KubeConfigPath(kubeconfigPath string) string { // RestConfig is to create a rest config from the context and kubeconfig passed as arguments. func RestConfig(context, kubeconfigPath string) (*rest.Config, error) { if kubeconfigPath == "" { - env := os.Getenv("KUBECONFIG") - if env != "" { - kubeconfigPath = env - } else { - kubeconfigPath = defaultKubeConfig - } + kubeconfigPath = env.GetString("KUBECONFIG", defaultKubeConfig) } if !Exists(kubeconfigPath) { return nil, ErrEmptyConfig diff --git a/vendor/k8s.io/utils/env/doc.go b/vendor/k8s.io/utils/env/doc.go new file mode 100644 index 000000000..092ba6736 --- /dev/null +++ b/vendor/k8s.io/utils/env/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2020 The Kubernetes 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 env provides utility functions for using environment variables. +package env // import "k8s.io/utils/env" diff --git a/vendor/k8s.io/utils/env/env.go b/vendor/k8s.io/utils/env/env.go new file mode 100644 index 000000000..bf4cc1a13 --- /dev/null +++ b/vendor/k8s.io/utils/env/env.go @@ -0,0 +1,74 @@ +/* +Copyright 2015 The Kubernetes 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 env + +import ( + "os" + "strconv" +) + +// GetString returns the env variable for the given key +// and falls back to the given defaultValue if not set +func GetString(key, defaultValue string) string { + v, ok := os.LookupEnv(key) + if ok { + return v + } + return defaultValue +} + +// GetInt returns the env variable (parsed as integer) for +// the given key and falls back to the given defaultValue if not set +func GetInt(key string, defaultValue int) (int, error) { + v, ok := os.LookupEnv(key) + if ok { + value, err := strconv.Atoi(v) + if err != nil { + return defaultValue, err + } + return value, nil + } + return defaultValue, nil +} + +// GetFloat64 returns the env variable (parsed as float64) for +// the given key and falls back to the given defaultValue if not set +func GetFloat64(key string, defaultValue float64) (float64, error) { + v, ok := os.LookupEnv(key) + if ok { + value, err := strconv.ParseFloat(v, 64) + if err != nil { + return defaultValue, err + } + return value, nil + } + return defaultValue, nil +} + +// GetBool returns the env variable (parsed as bool) for +// the given key and falls back to the given defaultValue if not set +func GetBool(key string, defaultValue bool) (bool, error) { + v, ok := os.LookupEnv(key) + if ok { + value, err := strconv.ParseBool(v) + if err != nil { + return defaultValue, err + } + return value, nil + } + return defaultValue, nil +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 09a243ced..dff451ee4 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1506,6 +1506,7 @@ k8s.io/kubectl/pkg/validation k8s.io/utils/buffer k8s.io/utils/clock k8s.io/utils/clock/testing +k8s.io/utils/env k8s.io/utils/exec k8s.io/utils/integer k8s.io/utils/internal/third_party/forked/golang/golang-lru