require 'yaml'
# A configuration object that knows how to read options out of a file
-# in <tt>~/.mailshears.conf.yml</tt>. The configuration options can be
-# accessed via methods even though the internal representation is a
-# hash.
+# in <tt>$XDG_CONFIG_HOME/mailshears/mailshears.conf.yml</tt>. The
+# configuration options can be accessed via methods even though the
+# internal representation is a hash.
#
# === Examples
#
#
class Configuration
- # The default path to the user's configuration file.
- USERCONF_PATH = ENV['HOME'] + '/.mailshears.conf.yml'
-
# The hash structure in which we store our configuration options
# internally.
@dict = {}
-
# Initialize a {Configuration} object with the config file at *path*.
#
# @param path [String] the path to the configuration file to
- # load. We check for a file named ".mailshears.conf.yml" in the
- # user's home directory by default.
+ # load. We check for a file named "mailshears.conf.yml" in the
+ # user's XDG configuration directory by default.
#
- def initialize(path = USERCONF_PATH)
+ def initialize(path = nil)
+ if path.nil? then
+ # The default path to the user's configuration file.
+ path = ENV['HOME'] + '/.config'
+ if ENV.has_key?('XDG_CONFIG_HOME') then
+ path = ENV['XDG_CONFIG_HOME']
+ end
+ path += '/mailshears/mailshears.conf.yml'
+ end
+
cfg = default_configuration()
# Now, load the user configuration which will override the