diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/nickserver/config.rb | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/lib/nickserver/config.rb b/lib/nickserver/config.rb index d47fc68..56478e2 100644 --- a/lib/nickserver/config.rb +++ b/lib/nickserver/config.rb @@ -1,14 +1,49 @@ +require 'yaml' + module Nickserver class Config + PATHS = [ + File.expand_path('../../../config/default.yml', __FILE__), + '/etc/leap/nickserver.yml' + ] + class << self attr_accessor :sks_url + attr_accessor :couch_port + attr_accessor :couch_host + attr_accessor :couch_database attr_accessor :port + attr_accessor :loaded end - end - # - # set reasonable defaults - # - Config.sks_url = 'https://hkps.pool.sks-keyservers.net:/pks/lookup' - Config.port = 6425 # aka "NICK" + def self.load + self.loaded ||= begin + PATHS.each do |file_path| + self.load_config(file_path) + end + true + end + end + + private + + def self.load_config(file_path) + begin + YAML.load(File.read(file_path)).each do |key, value| + begin + self.send("#{key}=", value) + rescue NoMethodError => exc + STDERR.puts "ERROR in file #{file_path}, '#{key}' is not a valid option" + exit(1) + end + end + puts "Loaded #{file_path}" + rescue Errno::ENOENT => exc + puts "Skipping #{file_path}" + rescue Exception => exc + STDERR.puts exc.inspect + exit(1) + end + end + end end |