Class: ParameterFiller
- Inherits:
-
Object
- Object
- ParameterFiller
- Defined in:
- lib/parameter_filler.rb
Instance Attribute Summary collapse
-
#config_files ⇒ Object
readonly
Returns the value of attribute config_files.
-
#interactive ⇒ Object
readonly
Returns the value of attribute interactive.
-
#verbose ⇒ Object
readonly
Returns the value of attribute verbose.
Instance Method Summary collapse
- #ask_for_param(key, default) ⇒ Object
- #fill_file(file_name) ⇒ Object
- #fill_file_list ⇒ Object
- #fill_parameters(data, dist_data) ⇒ Object
-
#initialize(files_list, verbose, interactive) ⇒ ParameterFiller
constructor
A new instance of ParameterFiller.
- #load_yaml_file(file_name) ⇒ Object
- #setup_files(file_name, dist_file_name) ⇒ Object
Constructor Details
#initialize(files_list, verbose, interactive) ⇒ ParameterFiller
Returns a new instance of ParameterFiller.
9 10 11 12 13 |
# File 'lib/parameter_filler.rb', line 9 def initialize(files_list, verbose, interactive) @config_files = files_list @verbose = verbose @interactive = interactive end |
Instance Attribute Details
#config_files ⇒ Object (readonly)
Returns the value of attribute config_files.
5 6 7 |
# File 'lib/parameter_filler.rb', line 5 def config_files @config_files end |
#interactive ⇒ Object (readonly)
Returns the value of attribute interactive.
7 8 9 |
# File 'lib/parameter_filler.rb', line 7 def interactive @interactive end |
#verbose ⇒ Object (readonly)
Returns the value of attribute verbose.
6 7 8 |
# File 'lib/parameter_filler.rb', line 6 def verbose @verbose end |
Instance Method Details
#ask_for_param(key, default) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/parameter_filler.rb', line 61 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) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/parameter_filler.rb', line 22 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 ⇒ Object
15 16 17 18 19 20 |
# File 'lib/parameter_filler.rb', line 15 def fill_file_list @config_files.each do |file_name| puts 'Filling ' + file_name + '...' if verbose fill_file file_name end end |
#fill_parameters(data, dist_data) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/parameter_filler.rb', line 47 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) data[key] = {} unless data.has_key?(key) data[key] = fill_parameters(data[key], dist_data[key]) end end data end |
#load_yaml_file(file_name) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/parameter_filler.rb', line 31 def load_yaml_file(file_name) begin data = YAML.load_file(file_name) data = {} unless data rescue Exception => e raise ArgumentError, 'Invalid YAML in config file ' + file_name unless data end data end |
#setup_files(file_name, dist_file_name) ⇒ Object
41 42 43 44 45 |
# File 'lib/parameter_filler.rb', line 41 def setup_files(file_name, dist_file_name) raise ArgumentError, 'Dist file not found for ' + file_name unless File.file?(dist_file_name) File.write(file_name, '') unless File.file?(file_name) return end |