Sha256: 952e6b3b27cea7fab86a3b6ac156e01ab7bf6c4eb327217b1d95ac3497ec62fc

Contents?: true

Size: 689 Bytes

Versions: 5

Compression:

Stored size: 689 Bytes

Contents

# frozen_string_literal: true
module SoapyBing
  class ParamGuard
    class ParamRequiredError < StandardError; end

    def initialize(local_options, env_namespace: '')
      @local_options = local_options
      @env_namespace = env_namespace
    end

    def require!(name)
      local_options.fetch(name, ENV[env_var_name(name)]) || raise(ParamRequiredError, err_msg(name))
    end

    private

    attr_reader :local_options, :env_namespace

    def err_msg(name)
      "#{name} have to be passed explicitly or via ENV['#{env_var_name(name)}']"
    end

    def env_var_name(name)
      (env_namespace.empty? ? name : "#{env_namespace}_#{name}").upcase.tr('-', '_')
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
soapy_bing-0.3.1 lib/soapy_bing/param_guard.rb
soapy_bing-0.3.0 lib/soapy_bing/param_guard.rb
soapy_bing-0.2.0 lib/soapy_bing/param_guard.rb
soapy_bing-0.1.0 lib/soapy_bing/param_guard.rb
soapy_bing-0.0.5 lib/soapy_bing/param_guard.rb