mirror of
https://github.com/int128/kubelogin.git
synced 2026-02-14 16:39:51 +00:00
53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/int128/kubelogin/pkg/tokencache"
|
|
"github.com/spf13/pflag"
|
|
)
|
|
|
|
func getDefaultTokenCacheDir() string {
|
|
// https://github.com/int128/kubelogin/pull/975
|
|
if kubeCacheDir, ok := os.LookupEnv("KUBECACHEDIR"); ok {
|
|
return filepath.Join(kubeCacheDir, "oidc-login")
|
|
}
|
|
return filepath.Join("~", ".kube", "cache", "oidc-login")
|
|
}
|
|
|
|
var allTokenCacheStorage = strings.Join([]string{"disk", "keyring", "none"}, "|")
|
|
|
|
type tokenCacheOptions struct {
|
|
TokenCacheDir string
|
|
TokenCacheStorage string
|
|
}
|
|
|
|
func (o *tokenCacheOptions) addFlags(f *pflag.FlagSet) {
|
|
f.StringVar(&o.TokenCacheDir, "token-cache-dir", getDefaultTokenCacheDir(), "Path to a directory of the token cache")
|
|
f.StringVar(&o.TokenCacheStorage, "token-cache-storage", "disk", fmt.Sprintf("Storage for the token cache. One of (%s)", allTokenCacheStorage))
|
|
}
|
|
|
|
func (o *tokenCacheOptions) expandHomedir() {
|
|
o.TokenCacheDir = expandHomedir(o.TokenCacheDir)
|
|
}
|
|
|
|
func (o *tokenCacheOptions) tokenCacheConfig() (tokencache.Config, error) {
|
|
config := tokencache.Config{
|
|
Directory: o.TokenCacheDir,
|
|
}
|
|
switch o.TokenCacheStorage {
|
|
case "disk":
|
|
config.Storage = tokencache.StorageDisk
|
|
case "keyring":
|
|
config.Storage = tokencache.StorageKeyring
|
|
case "none":
|
|
config.Storage = tokencache.StorageNone
|
|
default:
|
|
return tokencache.Config{}, fmt.Errorf("token-cache-storage must be one of (%s)", allTokenCacheStorage)
|
|
}
|
|
return config, nil
|
|
}
|