module Riffer::Rig::Credentials
Constants
- ENTRY_TYPE
- PATH
Public Instance Methods
(String | Symbol identifier, Hash[Symbol, String] values, ?config: Riffer::Config) → void
Source
# File lib/riffer/rig/credentials.rb, line 78 def apply(identifier, values, config: Riffer.config) @applied[identifier.to_sym] = values.dup.freeze return unless Riffer::Rig::ProviderSetup::TABLE.key?(identifier.to_sym) provider_config = config.public_send(identifier) values.each { |name, value| provider_config.public_send(:"#{name}=", value) } end
A registered extension provider has no Riffer::Config member, so the assignment stays built-ins-only. @rbs identifier: String | Symbol @rbs values: Hash[Symbol, String] @rbs config: Riffer::Config @rbs return: void
(String | Symbol identifier, host: Riffer::Rig::Hosts::_Host, ?setup: Riffer::Rig::ProviderSetup, ?env: Riffer::Rig::Env, ?config: Riffer::Config?, ?auth_path: String, ?settings_path: String, ?known: Hash[Symbol, String]) → (Resolution | String)
Source
# File lib/riffer/rig/credentials.rb, line 24 def install( identifier, host:, setup: Riffer::Rig::ProviderSetup.for(identifier), env: Riffer::Rig::Env.new, config: Riffer.config, auth_path: PATH, settings_path: Riffer::Rig::Settings::File::PATH, known: {} ) resolution = resolve(identifier, host:, setup:, env:, auth_path:, settings_path:) return resolution if resolution.is_a?(String) missing = resolution.missing - known.keys apply(identifier, resolution.values, config: config) if config && missing.empty? Resolution.new(values: resolution.values, missing: missing) end
@rbs identifier: String | Symbol @rbs host: Riffer::Rig::Hosts::_Host @rbs setup: Riffer::Rig::ProviderSetup @rbs env: Riffer::Rig::Env @rbs config: Riffer::Config? @rbs auth_path: String @rbs settings_path: String @rbs known: Hash[Symbol, String] @rbs return: (Resolution | String)
(String | Symbol identifier, host: Riffer::Rig::Hosts::_Host, env: Riffer::Rig::Env, auth_path: String, ?label: String, ?setup: Riffer::Rig::ProviderSetup, ?config: Riffer::Config?, ?settings_path: String, ?known: Hash[Symbol, String]) → (Hash[Symbol, String] | String)
Source
# File lib/riffer/rig/credentials.rb, line 52 def install_values( identifier, host:, env:, auth_path:, label: identifier.to_s, setup: Riffer::Rig::ProviderSetup.for(identifier), config: Riffer.config, settings_path: Riffer::Rig::Settings::File::PATH, known: {} ) resolution = install(identifier, host:, setup:, env:, config:, auth_path:, settings_path:, known:) return resolution if resolution.is_a?(String) return resolution.values if resolution.missing.empty? "#{label} has no #{setup.missing_fields(resolution.missing)}; " \ 'set it in the environment or run riffer interactively to paste it' \ "#{" (create one at #{setup.url})" if setup.url}" end
@rbs identifier: String | Symbol @rbs host: Riffer::Rig::Hosts::_Host @rbs env: Riffer::Rig::Env @rbs auth_path: String @rbs label: String @rbs setup: Riffer::Rig::ProviderSetup @rbs config: Riffer::Config? @rbs settings_path: String @rbs known: Hash[Symbol, String] @rbs return: (Hash[Symbol, String] | String)
(String | Symbol identifier) → Hash[Symbol, String]?
Source
# File lib/riffer/rig/credentials.rb, line 88 def read(identifier) @applied[identifier.to_sym] end
@rbs identifier: String | Symbol @rbs return: Hash[Symbol, String]?
(String | Symbol identifier, ?auth_path: String, ?settings_path: String) → String?
Source
# File lib/riffer/rig/credentials.rb, line 121 def remove(identifier, auth_path: PATH, settings_path: Riffer::Rig::Settings::File::PATH) unreadable_settings(settings_path) || update_auth(auth_path) { |document| document.except(identifier.to_s) } || ProviderFields.remove(identifier.to_s, path: settings_path) end
@rbs identifier: String | Symbol @rbs auth_path: String @rbs settings_path: String @rbs return: String?
(String | Symbol identifier, ?setup: Riffer::Rig::ProviderSetup, ?env: Riffer::Rig::Env, ?auth_path: String) → (:env | :stored | :chain | :missing | String)
Source
# File lib/riffer/rig/credentials.rb, line 132 def status(identifier, setup: Riffer::Rig::ProviderSetup.for(identifier), env: Riffer::Rig::Env.new, auth_path: PATH) secret_fields = setup.fields.select(&:secret) return :env if secret_fields.any? { |field| env.value_for(field) } stored = stored_secrets(identifier, auth_path) return stored if stored.is_a?(String) return :stored if secret_fields.any? { |field| stored.key?(field.name.to_s) } setup.chain? ? :chain : :missing end
@rbs identifier: String | Symbol @rbs setup: Riffer::Rig::ProviderSetup @rbs env: Riffer::Rig::Env @rbs auth_path: String @rbs return: :env | :stored | :chain | :missing | String
(String | Symbol identifier, Hash[Symbol, String] values, ?setup: Riffer::Rig::ProviderSetup, ?auth_path: String, ?settings_path: String) → String?
Source
# File lib/riffer/rig/credentials.rb, line 98 def store( identifier, values, setup: Riffer::Rig::ProviderSetup.for(identifier), auth_path: PATH, settings_path: Riffer::Rig::Settings::File::PATH ) secret_names = setup.fields.select(&:secret).map { |field| field.name.to_s } fields = values.transform_keys(&:to_s) secrets = fields.slice(*secret_names) plain = fields.except(*secret_names) refusal = (unreadable_settings(settings_path) unless plain.empty?) || store_secrets(identifier.to_s, secrets, auth_path) return refusal if refusal ProviderFields.store(identifier.to_s, plain, path: settings_path) unless plain.empty? end
@rbs identifier: String | Symbol @rbs values: Hash[Symbol, String] @rbs setup: Riffer::Rig::ProviderSetup @rbs auth_path: String @rbs settings_path: String @rbs return: String?