lib/ore/config.rb in ore-0.4.1 vs lib/ore/config.rb in ore-0.5.0
- old
+ new
@@ -1,25 +1,76 @@
require 'pathname'
module Ore
module Config
+ # Specifies whether user settings will be loaded
+ @@enabled = true
+
# The users home directory
@@home = File.expand_path(ENV['HOME'] || ENV['HOMEPATH'])
# Ore config directory
@@path = File.join(@@home,'.ore')
- # Default `ore` options file.
- @@options_file = File.join(@@path,'default.opts')
+ # Default options file.
+ @@options_file = File.join(@@path,'options.yml')
# Custom Ore Templates directory
@@templates_dir = File.join(@@path,'templates')
# The `data/` directory for Ore
@@data_dir = File.expand_path(File.join('..','..','data'),File.dirname(__FILE__))
#
+ # Enables access to user settings.
+ #
+ # @since 0.5.0
+ #
+ def Config.enable!
+ @@enabled = true
+ end
+
+ #
+ # Disables access to user settings.
+ #
+ # @since 0.5.0
+ #
+ def Config.disable!
+ @@enabled = false
+ end
+
+ #
+ # Loads the default options from `~/.ore/options.yml`.
+ #
+ # @return [Hash]
+ # The loaded default options.
+ #
+ # @raise [RuntimeError]
+ # The `~/.ore/options.yml` did not contain a YAML encoded Hash.
+ #
+ # @since 0.5.0
+ #
+ def Config.default_options
+ options = {}
+
+ if (@@enabled && File.file?(@@options_file))
+ new_options = YAML.load_file(@@options_file)
+
+ # default options must be a Hash
+ unless new_options.kind_of?(Hash)
+ raise("#{@@options_file} must contain a YAML encoded Hash")
+ end
+
+ new_options.each do |name,value|
+ options[name.to_sym] = value
+ end
+ end
+
+ return options
+ end
+
+ #
# The builtin templates.
#
# @yield [path]
# The given block will be passed every builtin template.
#
@@ -44,9 +95,11 @@
#
# @yieldparam [String] path
# The path of a Ore template directory.
#
def Config.installed_templates
+ return unless @@enabled
+
if File.directory?(@@templates_dir)
Dir.glob("#{@@templates_dir}/*") do |template|
yield template if File.directory?(template)
end
end