lib/settings.rb in capucine-0.0.8 vs lib/settings.rb in capucine-0.0.9

- old
+ new

@@ -1,66 +1,76 @@ module Capucine - + class NoUserConfigFile < RuntimeError end class Settings require 'rubygems' require 'yaml' - - attr_accessor :current_dir, :project_name, :is_usable, :config, :gem_dir, :gem_content_dir, :working_dir - + + attr_accessor :current_dir, :project_name, :is_usable, :config, :gem_dir, :gem_content_dir, :working_dir, :external_config, :user_config_file def initialize @current_dir = File.expand_path Dir.pwd @project_name = 'capucine' @is_usable = false + @external_config = false @config = nil @gem_dir = Gem.loaded_specs[@project_name].full_gem_path @gem_content_dir = File.join @gem_dir, 'content' self.reset_working_dir end def get_config user_config_file = nil + @user_config_file = user_config_file default = File.join @gem_content_dir, "templates", "#{@project_name}.yaml" - @config = YAML::load(File.open(default)) + @config = YAML::load(File.open(default)) - from_user = File.join @working_dir, "#{@project_name}.yaml" - from_user = File.expand_path user_config_file if user_config_file - + if user_config_file + from_user = File.expand_path user_config_file + @external_config = true + @working_dir = File.dirname from_user + else + from_user = File.join @working_dir, "#{@project_name}.yaml" + end + raise NoUserConfigFile, caller if not File.exist? from_user - + @is_usable = true additional = YAML::load(File.open(from_user)) if additional additional.each do |k, v| - @config[k] = nil @config[k] = v end end #self.test_config - end + end def test_config # TO DO : - conf_dirs = [] + conf_dirs = [] dirs = [] for conf in conf_dirs conf = @config[conf] dirs.push File.join(@working_dir,conf) end - + for dir in dirs unless File.directory?(dir) puts "[error] #{dir} - Does not exist." exit end end - end + end def reset_working_dir - @working_dir = File.expand_path Dir.pwd + if @external_config + from_user = File.expand_path @user_config_file + @working_dir = File.dirname from_user + else + @working_dir = File.expand_path Dir.pwd + end end end end