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