class DTK::Client::Config

Singleton patern to hold configuration for dtk client.

Constants

CLIENT_CONF
DEFAULT_CONF_FILE_PATH
REQUIRED_KEYS

Public Class Methods

[](k) click to toggle source
# File lib/client/config.rb, line 27
def self.[](k)
  instance[k.to_s]
end
new() click to toggle source
# File lib/client/config.rb, line 36
def initialize
  set_defaults!
  load_config_file_values!
  validate
end

Private Instance Methods

convert_data_types(val_string) click to toggle source
# File lib/client/config.rb, line 91
def convert_data_types(val_string)
  case val_string
   when /^(true|false)$/ 
    val_string.eql?('true') ? true : false
   when /^[0-9]+$/
    val_string.to_i
   when /^[0-9\.]+$/
    # making sure dont do something like '10.0.0.1'.to_f
    val_string.split('.').size == 2 ? val_string.to_f : val_string
   else 
    val_string
  end
end
load_config_file_values!() click to toggle source
# File lib/client/config.rb, line 46
def load_config_file_values!
  client_config_path = Configurator.client_config_path
  merge_config_file_content_into_hash!(client_config_path) if File.exist?(client_config_path)
end
merge_config_file_content_into_hash!(path) click to toggle source
# File lib/client/config.rb, line 60
def merge_config_file_content_into_hash!(path)
  merge!(parse_string_content(File.read(path)))
end
parse_string_content(string) click to toggle source

returns a hash

# File lib/client/config.rb, line 65
def parse_string_content(string)
  ret = {}
  string.each_line do |line|
    line.strip!
    # strip off comment
    line.gsub!(/#.+$/,'')
    # remove control characters
    line.gsub!(/\t/,'')
    # below strips blanks after and before '='
    if line =~ /(^[^=]+)[ ]*=[ ]*(.+$)/
      attr = $1
      val_string = $2
      ret.merge!(attr => parse_value_string(val_string))
    else
      # skipping any line that does not parse
    end
  end
  ret
end
parse_value_string(val_string) click to toggle source
# File lib/client/config.rb, line 85
def parse_value_string(val_string)
  # remove trailing blanks
  val_string = val_string.gsub(/[ ]+$/,'')
  convert_data_types(val_string)
end
set_defaults!() click to toggle source
# File lib/client/config.rb, line 42
def set_defaults!
  merge_config_file_content_into_hash!(DEFAULT_CONF_FILE_PATH)
end
validate() click to toggle source
# File lib/client/config.rb, line 52
def validate
  # TODO: along with checking for missing keys should check for legal values
  missing_keys = REQUIRED_KEYS - keys
  unless missing_keys.empty?
    raise Error::Usage, "Missing config keys (#{missing_keys.join(", ")}) in client config file '#{Configurator.client_config_path}"
  end
end