diff options
| -rw-r--r-- | lib/custodian/settings.rb | 98 | 
1 files changed, 98 insertions, 0 deletions
| diff --git a/lib/custodian/settings.rb b/lib/custodian/settings.rb new file mode 100644 index 0000000..2708570 --- /dev/null +++ b/lib/custodian/settings.rb @@ -0,0 +1,98 @@ + +require 'singleton' + + +# +# A class which encapsulates some global-settings from the custodian configuration file. +# +# The configuration file is optional, and we have defaults for every value. +# +# This class is a singleton to avoid having to re-parse the configuration file more than +# once per program-launch. +# +module Custodian + +  class Settings + +   include Singleton + + +    # +    # The parsed key=values store +    # +    attr_reader :settings + + +    # +    # Holder to mark whether we've loaded our file. +    # +    attr_reader :parsed + + + + +    # +    # Load the configuration file; called only once. +    # +    def _load +      @parsed   = true +      @settings = Hash.new() + +      # +      # The global configuration file. +      # +      file = "/etc/custodian/custodian.cfg" +      return unless( File.exists?( file ) ) + +      # +      # Load and "parse" the key=value content. +      # +      File.open( file, "r").each_line do |line| +        next if ( line.nil? || line =~ /^#/ ) +        if ( line =~ /^(.*)=(.*)$/ ) +          key = $1.dup +          val = $2.dup +          key.strip! +          val.strip! +          @settings[key] = val +        end +      end +    end + + + + +    # +    # Have we loaded our data? +    # +    def _loaded? +      @parsed +    end + + + + +    # +    # The timeout period for all tests +    # +    def timeout +      _load() unless( _loaded? ) + +      @settings['timeout'] || 30 +    end + + + + +    # +    # The beanstalkd server address +    # +    def queue_server +      _load() unless( _loaded? ) + +      @settings['queue'] || "127.0.0.1:13300" +    end + + +  end +end | 
