mirror of
https://github.com/ko-build/ko.git
synced 2025-03-29 21:20:57 +02:00
* first pass: kubectl flags must be passed after '--' * add warning when using non-separated flags * mark flags as deprecated * drop defaultCacheDir and homedir dependency
126 lines
5.0 KiB
Go
126 lines
5.0 KiB
Go
// Copyright 2021 Google LLC All Rights Reserved.
|
|
//
|
|
// 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 internal
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/spf13/pflag"
|
|
)
|
|
|
|
// AddFlags adds kubectl global flags to the given flagset.
|
|
func AddFlags(f *KubectlFlags, flags *pflag.FlagSet) {
|
|
flags.StringVar(&f.kubeConfig, "kubeconfig", "", "Path to the kubeconfig file to use for CLI requests. (DEPRECATED)")
|
|
flags.StringVar(&f.cacheDir, "cache-dir", "", "Default cache directory (DEPRECATED)")
|
|
flags.StringVar(&f.certFile, "client-certificate", "", "Path to a client certificate file for TLS (DEPRECATED)")
|
|
flags.StringVar(&f.keyFile, "client-key", "", "Path to a client key file for TLS (DEPRECATED)")
|
|
flags.StringVar(&f.bearerToken, "token", "", "Bearer token for authentication to the API server (DEPRECATED)")
|
|
flags.StringVar(&f.impersonate, "as", "", "Username to impersonate for the operation (DEPRECATED)")
|
|
flags.StringArrayVar(&f.impersonateGroup, "as-group", []string{}, "Group to impersonate for the operation, this flag can be repeated to specify multiple groups. (DEPRECATED)")
|
|
flags.StringVar(&f.username, "username", "", "Username for basic authentication to the API server (DEPRECATED)")
|
|
flags.StringVar(&f.password, "password", "", "Password for basic authentication to the API server (DEPRECATED)")
|
|
flags.StringVar(&f.clusterName, "cluster", "", "The name of the kubeconfig cluster to use (DEPRECATED)")
|
|
flags.StringVar(&f.authInfoName, "user", "", "The name of the kubeconfig user to use (DEPRECATED)")
|
|
flags.StringVarP(&f.namespace, "namespace", "n", "", "If present, the namespace scope for this CLI request (DEPRECATED)")
|
|
flags.StringVar(&f.context, "context", "", "The name of the kubeconfig context to use (DEPRECATED)")
|
|
flags.StringVarP(&f.apiServer, "server", "s", "", "The address and port of the Kubernetes API server (DEPRECATED)")
|
|
flags.StringVar(&f.tlsServerName, "tls-server-name", "", "Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used (DEPRECATED)")
|
|
flags.BoolVar(&f.insecure, "insecure-skip-tls-verify", false, "If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure (DEPRECATED)")
|
|
flags.StringVar(&f.caFile, "certificate-authority", "", "Path to a cert file for the certificate authority (DEPRECATED)")
|
|
flags.StringVar(&f.timeout, "request-timeout", "", "The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (DEPRECATED)")
|
|
}
|
|
|
|
// KubectlFlags holds kubectl global flag values as parsed from flags.
|
|
type KubectlFlags struct {
|
|
kubeConfig string
|
|
cacheDir string
|
|
certFile string
|
|
keyFile string
|
|
bearerToken string
|
|
impersonate string
|
|
impersonateGroup []string
|
|
username string
|
|
password string
|
|
clusterName string
|
|
authInfoName string
|
|
context string
|
|
namespace string
|
|
apiServer string
|
|
tlsServerName string
|
|
insecure bool
|
|
caFile string
|
|
timeout string
|
|
}
|
|
|
|
// Values returns a slice of flag values to pass to kubectl.
|
|
func (f KubectlFlags) Values() []string {
|
|
var v []string
|
|
if f.kubeConfig != "" {
|
|
v = append(v, "--kubeconfig="+f.kubeConfig)
|
|
}
|
|
if f.cacheDir != "" {
|
|
v = append(v, "--cache-dir="+f.cacheDir)
|
|
}
|
|
if f.certFile != "" {
|
|
v = append(v, "--client-certificate="+f.certFile)
|
|
}
|
|
if f.keyFile != "" {
|
|
v = append(v, "--client-key="+f.keyFile)
|
|
}
|
|
if f.bearerToken != "" {
|
|
v = append(v, "--token="+f.bearerToken)
|
|
}
|
|
if f.impersonate != "" {
|
|
v = append(v, "--as="+f.impersonate)
|
|
}
|
|
if len(f.impersonateGroup) > 0 {
|
|
v = append(v, "--as-group="+strings.Join(f.impersonateGroup, ","))
|
|
}
|
|
if f.username != "" {
|
|
v = append(v, "--username="+f.username)
|
|
}
|
|
if f.password != "" {
|
|
v = append(v, "--password="+f.password)
|
|
}
|
|
if f.clusterName != "" {
|
|
v = append(v, "--cluster="+f.clusterName)
|
|
}
|
|
if f.authInfoName != "" {
|
|
v = append(v, "--user="+f.authInfoName)
|
|
}
|
|
if f.context != "" {
|
|
v = append(v, "--context="+f.context)
|
|
}
|
|
if f.namespace != "" {
|
|
v = append(v, "--namespace="+f.namespace)
|
|
}
|
|
if f.apiServer != "" {
|
|
v = append(v, "--server="+f.apiServer)
|
|
}
|
|
if f.tlsServerName != "" {
|
|
v = append(v, "--tls-server-name="+f.tlsServerName)
|
|
}
|
|
if f.insecure {
|
|
v = append(v, "--insecure=true")
|
|
}
|
|
if f.caFile != "" {
|
|
v = append(v, "--certificate-authority="+f.caFile)
|
|
}
|
|
if f.timeout != "" {
|
|
v = append(v, "--request-timeout="+f.timeout)
|
|
}
|
|
return v
|
|
}
|