diff options
Diffstat (limited to 'bin')
| -rw-r--r-- | bin/mauveconsole | 107 | 
1 files changed, 86 insertions, 21 deletions
| diff --git a/bin/mauveconsole b/bin/mauveconsole index b1f9e65..3c14824 100644 --- a/bin/mauveconsole +++ b/bin/mauveconsole @@ -12,6 +12,8 @@  #  #  -V, --version         Show the version number, and exit  # +#  -v, --verbose         Show verbose errors +#  #  <configuration file>  File from whence to load the configuration. If none is  #                        specified, then mauvealert.conf in the current  #                        directory is used, and failing that @@ -24,25 +26,34 @@  #  Patrick J Cherry <patrick@bytemark.co.uk>  # -def error(msg) -  STDERR.print "*** Error: #{msg}\n" -  STDERR.print "*** For help, type: #{$0} -h\n" -  exit 1 +help = manual = verbose = version = test = false +while arg = ARGV.pop +  case arg +    when  /-(h|-help)/ +      help = true +    when /-(V|-version)/ +      version = true +    when /-(m|-manual)/ +      manual = true +    when /(-(v|-verbose))/ +      verbose = true +    when /(-(t|-test))/ +      test = true +    else +      configuration_file = arg +  end  end -help    = ARGV.any?{|a| a =~ /-(h|-help)/} -version = ARGV.any?{|a| a =~ /-(V|-version)/} -manual  = ARGV.any?{|a| a =~ /-(m|-manual)/} - +#  # CAUTION! Kwality kode.  #  if manual or help    # Open the file, stripping the shebang line    lines = File.open(__FILE__){|fh| fh.readlines}[1..-1] -    found_synopsis = false    lines.each do |line| +      line.chomp!      break if line.empty? @@ -54,6 +65,7 @@ if manual or help      puts line[2..-1].to_s      break if help and found_synopsis and line =~ /^#\s*$/ +    end  end @@ -63,33 +75,86 @@ puts "#{$0}: version "+Mauve::VERSION if version  exit 0 if help or version or manual -configuration_file = ARGV.shift +require 'log4r' + +# +# Initial logger -- gets detroyed later. +# +logger      = Log4r::Logger.new 'Mauve' +outputter   = Log4r::StderrOutputter.new("initial") +outputter.formatter = Log4r::PatternFormatter.new( :pattern => "%d [ %6.6l ] [ %12.12c ] %m" ) +outputter.level     = verbose ? Log4r::DEBUG : Log4r::INFO +logger.outputters   << outputter +require 'pp' + +def error(msg) +  logger = Log4r::Logger['Mauve'] +  logger.error +  logger.error "*** Error: #{msg}" +  logger.error "*** For help, type: #{$0} -h" + +  if msg.respond_to?("backtrace") +    logger.debug "*** Backtrace:" +    logger.debug msg.backtrace.join("\n")  +  end + +  exit 1 +end + + +begin +  eval "Proc.new { |a,&b| }" +rescue SyntaxError => no_blocks_with_procs +  error "mauveconsole must have Ruby 1.8.7 or later." +end +  configuration_file = [".", "/etc/mauvealert/"].collect{|x| File.join(x, "mauveserver.conf") }.find{|d| File.file?(d)} if configuration_file.nil?  configuration_file = File.expand_path(configuration_file) unless configuration_file.nil?  if configuration_file.nil? -  error "No configuration file could be found\n" +  error "No configuration file could be found"  end  unless File.file?(configuration_file) -  error "Configuration file #{configuration_file} not found\n" +  error "Configuration file #{configuration_file} not found"  end -require 'irb' -require 'thread' +require 'mauve/configuration'  require 'mauve/configuration_builder'  require 'mauve/configuration_builders' -require 'mauve/configuration' - -Thread.abort_on_exception = true +require 'irb' -include Mauve +# +# Don't truncate logfiles. +# +module Mauve +  module ConfigurationBuilders +    class LoggerOutputter < ObjectBuilder +      def result +        @args[:trunc] = false if @args and @args[:trunc] == true +        @result ||= Log4r.const_get(@outputter).new("Mauve", @args) +      end +    end +  end +end  begin -  Configuration.current = ConfigurationBuilder.load(configuration_file) -  Server.instance.setup +  Mauve::Configuration.current = Mauve::ConfigurationBuilder.load(configuration_file) +  Mauve::Server.instance.setup  rescue StandardError => ex -  error ex.message +  error ex   end +puts "This is mauve #{Mauve::VERSION}" + +if outputter and logger.outputters.include?(outputter) +  logger.debug "Closing initial outputter" +  logger.outputters.delete(outputter) +  outputter.flush +  outputter.close +end + +puts "This is mauve #{Mauve::VERSION}" + +include Mauve  IRB.start | 
