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",
  "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:



131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/kettle/dev/release_secrets.rb', line 131

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"
  return OnePassword.new(env_config.merge(configured)) if OnePassword.configured?(name)

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

.env_configObject



144
145
146
147
148
149
# File 'lib/kettle/dev/release_secrets.rb', line 144

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