Class: Kettle::Dev::ReleaseSecrets::Factory

Inherits:
Object
  • Object
show all
Defined in:
lib/kettle/dev/release_secrets.rb

Constant Summary collapse

ENV_KEYS =
{
  "account" => "KETTLE_RELEASE_1PASSWORD_ACCOUNT",
  "cli" => "KETTLE_RELEASE_1PASSWORD_CLI",
  "item" => "KETTLE_RELEASE_1PASSWORD_ITEM",
  "gem_signing_passphrase_field" => "KETTLE_RELEASE_1PASSWORD_GEM_SIGNING_PASSPHRASE_FIELD",
  "rubygems_otp_field" => "KETTLE_RELEASE_1PASSWORD_RUBYGEMS_OTP_FIELD",
  "gem_signing_passphrase_reference" => "KETTLE_RELEASE_1PASSWORD_GEM_SIGNING_PASSPHRASE_REFERENCE",
  "rubygems_otp_reference" => "KETTLE_RELEASE_1PASSWORD_RUBYGEMS_OTP_REFERENCE",
  "gem_signing_passphrase_source" => "KETTLE_RELEASE_GEM_SIGNING_PASSPHRASE_SOURCE"
}.freeze

Class Method Summary collapse

Class Method Details

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

Raises:



238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
# File 'lib/kettle/dev/release_secrets.rb', line 238

def self.build(provider_name: nil, config: nil)
  configured = config || {}
  name = if provider_name.to_s.empty?
    configured.fetch("provider", ENV.fetch("KETTLE_RELEASE_SECRETS_PROVIDER", ""))
  else
    provider_name.to_s
  end
  return Provider.new if name.empty? || name == "interactive"
  if %w[family broker].include?(name.downcase)
    endpoint = configured.fetch("endpoint", ENV.fetch("KETTLE_RELEASE_SECRETS_BROKER", ""))
    return BrokerClient.new(endpoint)
  end
  return OnePassword.new(env_config.merge(configured)) if OnePassword.configured?(name)

  raise Kettle::Dev::Error, "unsupported release secrets provider #{name.inspect}"
end

.env_configObject



255
256
257
258
259
260
# File 'lib/kettle/dev/release_secrets.rb', line 255

def self.env_config
  ENV_KEYS.each_with_object({}) do |(key, env_key), memo|
    value = ENV.fetch(env_key, "").to_s
    memo[key] = value unless value.empty?
  end
end