Class: Kettle::Family::Secrets::Factory

Inherits:
Object
  • Object
show all
Defined in:
lib/kettle/family/secrets.rb

Class Method Summary collapse

Class Method Details

.build(config:, override_provider: nil) ⇒ Object



137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/kettle/family/secrets.rb', line 137

def self.build(config:, override_provider: nil)
  if defined?(Kettle::Dev::ReleaseSecrets)
    secrets_config = config.release_secrets
    provider_name = override_provider.to_s.empty? ? secrets_config.fetch("provider", nil) : override_provider
    return Provider.new if provider_name.to_s.empty? || provider_name.to_s == "interactive"
    return OnePassword.new(Kettle::Dev::ReleaseSecrets::Factory.env_config.merge(secrets_config)) if OnePassword.configured?(provider_name)

    raise Error, "unsupported release secrets provider #{provider_name.inspect}"
  end

  secrets_config = config.release_secrets
  provider_name = override_provider.to_s.empty? ? secrets_config.fetch("provider", nil) : override_provider
  return Provider.new if provider_name.to_s.empty? || provider_name.to_s == "interactive"
  return OnePassword.new(secrets_config) if OnePassword.configured?(provider_name)

  raise Error, "unsupported release secrets provider #{provider_name.inspect}"
rescue => error
  if defined?(Kettle::Dev::Error) && error.is_a?(Kettle::Dev::Error)
    raise Error, error.message
  end

  raise
end