class SettingsManager

all about settings

Attributes

default_settings[R]
homedir_settings[R]
settings[R]

Public Class Methods

new(hash) click to toggle source

expacting :homedir_path, :default_path, template_path

# File lib/ascii_invoicer/settings_manager.rb, line 12
def initialize hash
  @init_hash = Hashr.new hash

  raise "SettingsManager: No default file given." unless @init_hash.default_path?
  raise "SettingsManager: No homedir file given." unless @init_hash.homedir_path?

  @init_hash.default_path  = File.expand_path @init_hash.default_path
  @init_hash.homedir_path  = File.expand_path @init_hash.homedir_path
  @init_hash.template_path = File.expand_path @init_hash.template_path if @init_hash.template_path?

  if File.exists?(@init_hash.default_path)
    @default_settings = load_file @init_hash.default_path
  else
    raise "SettingsManager: Default settings file does not exist (#{@init_hash.default_path})."
  end

  if not File.exists?(@init_hash.homedir_path)
    if @init_hash.template_path?
      raise "SettingsManager: Template file does not exist" unless File.exists?(@init_hash.template_path)
      puts "#{@init_hash.homedir_path} does not exist, but #{@init_hash.homedir_path} does"
      puts "-> copying over"
      FileUtils.cp @init_hash.template_path, @init_hash.homedir_path
    else
      # using only default_settings
      # suggested use: used a default_settings as template, perhaps comment out everything
    end
  else
    @homedir_settings = load_file @init_hash.homedir_path
  end

  # putting it all together
  @settings = Hashr.new @default_settings.graft @homedir_settings

  # adding some meta stuff
  @settings.settings_homedir_path  = @init_hash.homedir_path
  @settings.settings_default_path  = @init_hash.default_path
  @settings.settings_template_path = @init_hash.template_path
  @settings.default_settings       = @default_settings
  @settings.homedir_settings       = @homedir_settings
  return @settings
end

Public Instance Methods

load_file(path) click to toggle source
# File lib/ascii_invoicer/settings_manager.rb, line 54
def load_file path
  begin
    YAML::load File.open File.expand_path path
  rescue SyntaxError => error
    puts "ERROR parsing #{File.expand_path path}!"
    puts error
  end
end