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