func NewValidator()

in client/internal/kubeconfig/validator.go [45:70]


func NewValidator(logger *zap.Logger) Validator {
	return &validator{
		clientConfigLoader: func(kubeconfigPath string) (*restclient.Config, error) {
			if _, err := os.Stat(kubeconfigPath); err != nil {
				return nil, fmt.Errorf("failed to read specified kubeconfig: %w", err)
			}
			// Load structured kubeconfig data from the given path.
			loader := &clientcmd.ClientConfigLoadingRules{ExplicitPath: kubeconfigPath}
			loadedConfig, err := loader.Load()
			if err != nil {
				return nil, err
			}
			// Flatten the loaded data to a particular restclient.Config based on the current context.
			return clientcmd.NewNonInteractiveClientConfig(
				*loadedConfig,
				loadedConfig.CurrentContext,
				&clientcmd.ConfigOverrides{},
				loader,
			).ClientConfig()
		},
		clientsetLoader: func(clientConfig *restclient.Config) (kubernetes.Interface, error) {
			return kubernetes.NewForConfig(clientConfig)
		},
		logger: logger,
	}
}