fedux-org/proxy_rb

View on GitHub
lib/proxy_rb/configuration.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true
require 'contracts'

require 'proxy_rb/version'
require 'proxy_rb/basic_configuration'

require 'proxy_rb/password_fetchers/basic_password_fetcher'
require 'proxy_rb/password_fetchers/environment_password_fetcher'

require 'proxy_rb/drivers/webkit_driver'

# ProxyRb
module ProxyRb
  # ProxyRb Configuration
  #
  # This defines the configuration options of proxy_rb
  class Configuration < BasicConfiguration
    option_accessor :password_fetcher, contract: { PasswordFetchers::BasicPasswordFetcher => PasswordFetchers::BasicPasswordFetcher }, default: ProxyRb::PasswordFetchers::EnvironmentPasswordFetcher.new(prefix: 'SECRET')
    option_accessor :driver, contract: { Drivers::BasicDriver => Drivers::BasicDriver }, default: ProxyRb::Drivers::WebkitDriver.new
    option_accessor :console_history_file, contract: { String => String }, default: '~/.proxy_rb_history'
    option_accessor :strict, contract: { Bool => Bool }, default: true
  end
end

# ProxyRb
module ProxyRb
  @config = Configuration.new

  class << self
    attr_reader :config

    # Configure proxy_rb
    #
    # @example How to configure proxy_rb
    #
    #   ProxyRb.configure do |config|
    #     config.<option> = <value>
    #   end
    #
    def configure(&block)
      @config.configure(&block)

      self
    end
  end
end