class Donffer::CLI

Public Class Methods

new(opts=nil) click to toggle source
# File lib/donffer.rb, line 16
def initialize(opts=nil)

  filename = opts[:file]
  prefix = opts[:env_prefix]
  create_new = opts[:create_new]
  verbose = opts[:verbose]

  raise "ERR: File is mandatory. See donffer -h" if filename.nil?
  file_exists = File.exists?(filename)

  raise "ERR: #{filename} doesn't exists!" if !file_exists and create_new == false
  raise "ERR: Invalid env_prefix! env_prefix must be set!" if prefix.nil? or prefix.empty?

  data = {} 
  data = YAML.load(File.read(filename)) if file_exists

  ENV.each do |key, val|
    next if !key.start_with?(prefix)
    attr = key[prefix.length..-1]
    if verbose
      if data[attr].nil?
        p "Adding '#{attr}': '#{val}'"
      elsif data[attr] != val
        p "Replacing '#{attr}': '#{data[attr]}' -> '#{val}'"
      end
    end
    
    val = val.split(",") if attr.pluralize == attr
    # TODO support objects
    
    data[attr] = val
  end
  
  File.open(filename, "w") { |file| file.write(data.to_yaml) }

end