class ParameterFiller

Attributes

config_files[R]
interactive[R]
verbose[R]

Public Class Methods

new(files_list, verbose, interactive) click to toggle source
# File lib/parameter_filler.rb, line 9
def initialize(files_list, verbose, interactive)
  @config_files = files_list
  @verbose = verbose
  @interactive = interactive
end

Public Instance Methods

ask_for_param(key, default) click to toggle source
# File lib/parameter_filler.rb, line 69
def ask_for_param(key, default)
  return default unless interactive
  print "Key \"#{key}\" (default: #{default}): "
  param = gets.chomp
  if param.empty? || !interactive
    param = default
  else
    param = YAML.load(param)
  end
  param
end
fill_file(file_name) click to toggle source
# File lib/parameter_filler.rb, line 24
def fill_file(file_name)
  dist_file_name = file_name + '.dist'
  setup_files(file_name, dist_file_name)
  config_data = load_yaml_file file_name
  dist_data = load_yaml_file dist_file_name
  config_data = fill_parameters(config_data, dist_data)
  File.write(file_name, config_data.to_yaml)
end
fill_file_list() click to toggle source
# File lib/parameter_filler.rb, line 15
def fill_file_list
  @config_files.each do |file_name|
    if verbose
      puts 'Filling ' + file_name + '...'
    end
    fill_file file_name
  end
end
fill_parameters(data, dist_data) click to toggle source
# File lib/parameter_filler.rb, line 53
def fill_parameters(data, dist_data)
  data ||= {}
  dist_data.each do |key, value|
    unless data.has_key?(key) || dist_data[key].is_a?(Hash)
      data[key] = ask_for_param(key, value)
    end
    if dist_data[key].is_a?(Hash)
      unless data.has_key?(key)
        data[key] = {}
      end
      data[key] = fill_parameters(data[key], dist_data[key])
    end
  end
  data
end
load_yaml_file(file_name) click to toggle source
# File lib/parameter_filler.rb, line 33
def load_yaml_file(file_name)
  begin
    data = YAML.load_file(file_name)
    unless data
      data = {}
    end
  rescue Exception => e
    raise ArgumentError, 'Invalid YAML in config file ' + file_name unless data
  end
  data
end
setup_files(file_name, dist_file_name) click to toggle source
# File lib/parameter_filler.rb, line 45
def setup_files(file_name, dist_file_name)
  raise ArgumentError, 'Dist file not found for ' + file_name unless File.file?(dist_file_name)
  unless File.file?(file_name)
    File.write(file_name, '')
  end
  return
end