Class: Fastlane::Helper::CredentialResolver
- Inherits:
-
Object
- Object
- Fastlane::Helper::CredentialResolver
- Defined in:
- lib/fastlane/plugin/translate_gpt_release_notes/helper/credential_resolver.rb
Overview
CredentialResolver manages multiple provider API keys simultaneously, allowing users to configure keys for all providers and select which to use via the provider parameter.
This class provides a centralized way to resolve API credentials from various sources (parameters, environment variables) with a defined priority order.
Constant Summary collapse
- PROVIDER_CREDENTIALS =
Maps each provider to its credential configuration Each provider has:
-
env_vars: Array of environment variable names to check (in order)
-
param_key: Symbol for the parameter key in the params hash
-
{ 'openai' => { env_vars: ['OPENAI_API_KEY', 'GPT_API_KEY'], # GPT_API_KEY for backward compatibility param_key: :openai_api_key }, 'anthropic' => { env_vars: ['ANTHROPIC_API_KEY'], param_key: :anthropic_api_key }, 'gemini' => { env_vars: ['GEMINI_API_KEY'], param_key: :gemini_api_key }, 'deepl' => { env_vars: ['DEEPL_API_KEY'], param_key: :deepl_api_key } }.freeze
Class Method Summary collapse
-
.all_providers ⇒ Array<String>
Returns an array of all supported provider names.
-
.available_providers(params = {}) ⇒ Array<String>
Returns an array of provider names that have configured credentials.
-
.credential_help(provider_name) ⇒ String
Returns help text explaining how to configure credentials for a provider.
-
.credentials_exist?(provider_name, params = {}) ⇒ Boolean
Checks if credentials exist for a given provider.
-
.provider_config(provider_name) ⇒ Hash?
Retrieves the credential configuration for a provider.
-
.resolve(provider_name, params = {}) ⇒ String?
Resolves the API key for a given provider following priority order: 1.
Class Method Details
.all_providers ⇒ Array<String>
Returns an array of all supported provider names.
100 101 102 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/credential_resolver.rb', line 100 def self.all_providers PROVIDER_CREDENTIALS.keys.freeze end |
.available_providers(params = {}) ⇒ Array<String>
Returns an array of provider names that have configured credentials.
72 73 74 75 76 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/credential_resolver.rb', line 72 def self.available_providers(params = {}) PROVIDER_CREDENTIALS.keys.select do |provider_name| credentials_exist?(provider_name, params) end end |
.credential_help(provider_name) ⇒ String
Returns help text explaining how to configure credentials for a provider.
82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/credential_resolver.rb', line 82 def self.credential_help(provider_name) config = provider_config(provider_name) return "Unknown provider: #{provider_name}" unless config env_vars = config[:env_vars] param_key = config[:param_key] if env_vars.length == 1 "Set #{env_vars.first} environment variable, or pass :#{param_key} parameter" else env_vars_str = env_vars.join(' or ') "Set #{env_vars_str} environment variable, or pass :#{param_key} parameter" end end |
.credentials_exist?(provider_name, params = {}) ⇒ Boolean
Checks if credentials exist for a given provider.
64 65 66 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/credential_resolver.rb', line 64 def self.credentials_exist?(provider_name, params = {}) !resolve(provider_name, params).nil? end |
.provider_config(provider_name) ⇒ Hash?
Retrieves the credential configuration for a provider. Handles case-insensitive provider names by downcasing.
111 112 113 114 115 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/credential_resolver.rb', line 111 def self.provider_config(provider_name) return nil if provider_name.nil? PROVIDER_CREDENTIALS[provider_name.to_s.downcase] end |
.resolve(provider_name, params = {}) ⇒ String?
Resolves the API key for a given provider following priority order:
-
Direct parameter (e.g., params)
-
Environment variables in order defined in PROVIDER_CREDENTIALS
-
Legacy fallback for OpenAI (GPT_API_KEY) if defined in env_vars
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/credential_resolver.rb', line 42 def self.resolve(provider_name, params = {}) config = provider_config(provider_name) return nil unless config # Priority 1: Check direct parameter param_value = params[config[:param_key]] return param_value.to_s.strip unless param_value.nil? || param_value.to_s.strip.empty? # Priority 2: Check environment variables in order config[:env_vars].each do |env_var| env_value = ENV[env_var] return env_value.to_s.strip unless env_value.nil? || env_value.to_s.strip.empty? end nil end |