#!/usr/bin/ruby require 'clog' include Clog require 'optparse' require 'yaml' require 'ostruct' require 'zlib' require 'time' # command-line options options = OpenStruct.new({ :config_file => "/etc/clog/clog.conf", :from => parsedate("yesterday"), :to => parsedate("now") }) opts = OptionParser.new do |opts| opts.banner = "usage: #{$0} [options]" opts.on('-c','--config PATH','specify configuration file') { |options.config_file|} opts.on('-C','--show-config','show real configuration') { |options.show_config|} opts.on('-f','--from DATE','start date (yesterday)') { |d| options.from = parsedate(d) } opts.on('-t','--to DATE','start date (now)') { |d| options.to = parsedate(d) } opts.on('-h','--help','this message') { puts opts; exit } opts.separator '' opts.separator('Dates are in the format that date(1) accepts') end opts.parse!(ARGV) starttime = Time.now # configuration file config = OpenStruct.new(YAML.load(File.read(options.config_file))) rescue begin puts "Error reading config file #{options.config_file}" puts opts exit 1 end config.agent_dirs ||= [] puts config.inspect if options.show_config # load agents config.agent_dirs = [config.agent_dirs] if config.agent_dirs === String ($: + config.agent_dirs).each do |path| Dir.glob("#{path}/clog/agents/*.rb") { |f| require f } end directors = [] if config.files.nil? $stderr.puts "Nothing to do." exit(1) end config.files.each do |f| glob = f['glob'] agents = [] f['agents'].each do |a| agents.push eval("Clog::#{a}.new") end ignore = f['ignore'] directors.push Director.new(glob,agents,ignore,options.from,options.to) end # run directors.each {|d| d.run} # output puts <