class Rairtame::Config

Public Class Methods

new(opts={}) click to toggle source
# File lib/rairtame/config.rb, line 24
def initialize(opts={})
  set_paths(opts[:config_file])
  @config = read_config()
end

Public Instance Methods

[](key) click to toggle source
# File lib/rairtame/config.rb, line 29
def [](key)
  @config[key]
end
[]=(key, value) click to toggle source
# File lib/rairtame/config.rb, line 33
def []=(key, value)
  @config[key] = value
end

Private Instance Methods

create_uuid() click to toggle source
# File lib/rairtame/config.rb, line 85
def create_uuid
  @uuid = UUIDTools::UUID.random_create.to_s
  @config['uuid'] = @uuid
  save_config
end
initialize_config() click to toggle source
# File lib/rairtame/config.rb, line 73
def initialize_config
  begin
    puts "Initialize configuration at #{@cfg_file}"
    FileUtils.mkdir_p(@cfg_folder) if !File.exists?(@cfg_folder)
    FileUtils.touch(@cfg_file) if !File.exists?(@cfg_file)
    File.write(@cfg_file, '{}')
  rescue
    warn 'Cannot initialize configuration!!'
    raise $!
  end
end
read_config() click to toggle source
# File lib/rairtame/config.rb, line 50
def read_config
  begin
    @config = JSON.load(File.read(@cfg_file))
    @uuid = @config['uuid']
    # We really need an uuid
    if @uuid.nil?
      create_uuid
    end
  rescue 
    initialize_config()
    retry
  end
end
save_config() click to toggle source
# File lib/rairtame/config.rb, line 64
def save_config
  begin
    File.write(@cfg_file, @config.to_json)
  rescue
    warn 'Cannot save configuration!!'
    raise $!
  end
end
set_paths(config_file) click to toggle source
# File lib/rairtame/config.rb, line 39
def set_paths(config_file)
  if config_file.nil?
    home = Dir.respond_to?(:home) ? Dir.home : File.expand_path('~')
    @cfg_folder = File.join(home, '.config', 'rairtame')
    @cfg_file = File.join(@cfg_folder, 'config')
  else
    @cfg_file = config_file
    @cfg_folder = File.dirname(@cfg_file)
  end
end