code: func NewSource(opts ...source.Option) source.Source {
  	options := source.NewOptions(opts...)
  
  	// create the client
  	client, _ := api.NewClient(api.DefaultConfig())
  
  	// get and set options
  	if address := getAddress(options); address != "" {
  		_ = client.SetAddress(address)
  	}
  
  	if nameSpace := getNameSpace(options); nameSpace != "" {
  		client.SetNamespace(nameSpace)
  	}
  
  	if token := getToken(options); token != "" {
  		client.SetToken(token)
  	}
  
  	path := getResourcePath(options)
  	name := getSecretName(options)
  	if name == "" {
  		name = path
  	}
  
  	return &vault{
  		opts:       options,
  		client:     client,
  		secretPath: path,
  		secretName: name,
  	}
  }
docs: // NewSource creates a new vault source