Sha256: db62cc13a4d68f39a3a27da8a907ad3fb547460f312a7884ddbd9977efa08447

Contents?: true

Size: 959 Bytes

Versions: 1

Compression:

Stored size: 959 Bytes

Contents

# frozen_string_literal: true

class Evergreen
  # Configuration for an instance of Evergreen
  class Configuration
    attr_reader :host, :default_username, :default_password, :read_only

    def initialize(config_hash)
      @read_only = true
      config_hash.each_pair do |key, value|
        instance_variable_set("@#{key}", value)
      end
      configuration_complete
    end

    private

    def configuration_complete
      check_required_fields
      freeze
    end

    def check_required_fields
      raise ArgumentError, 'you must supply a host' if field_is_empty :host
      return unless !@read_only && (field_is_empty(:default_username) || field_is_empty(:default_password))

      raise ArgumentError, 'you must supply default credentials unless you are in read-only mode'
    end

    def field_is_empty(field_name)
      field_value = instance_variable_get("@#{field_name}")
      field_value.nil? || field_value.empty?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
evergreen-ils-0.2.0 lib/evergreen/configuration.rb