code: func NewSource(opts ...source.Option) source.Source {
  	var (
  		options    = source.NewOptions(opts...)
  		name       = DefaultName
  		configPath = DefaultConfigPath
  		namespace  = DefaultNamespace
  	)
  
  	prefix, ok := options.Context.Value(prefixKey{}).(string)
  	if ok {
  		name = prefix
  	}
  
  	cfg, ok := options.Context.Value(configPathKey{}).(string)
  	if ok {
  		configPath = cfg
  	}
  
  	sname, ok := options.Context.Value(nameKey{}).(string)
  	if ok {
  		name = sname
  	}
  
  	ns, ok := options.Context.Value(namespaceKey{}).(string)
  	if ok {
  		namespace = ns
  	}
  
  	// TODO handle if the client fails what to do current return does not support error
  	client, err := getClient(configPath)
  
  	return &configmap{
  		cerr:       err,
  		client:     client,
  		opts:       options,
  		name:       name,
  		configPath: configPath,
  		namespace:  namespace,
  	}
  }
docs: // NewSource is a factory function