]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/common/configuration.rb
lib/common/configuration.rb: move the config file to XDG_CONFIG_HOME
[mailshears.git] / lib / common / configuration.rb
index f04d018d70fa572bbbc6c6d418e6f9e73225b26a..78f5c04f9b57937f13fa523ce2a755eaa59aeedf 100644 (file)
@@ -1,9 +1,9 @@
 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
 #
@@ -13,21 +13,26 @@ require 'yaml'
 #
 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