#!/usr/bin/env ruby require 'botolo' require 'openssl' require 'codesake-commons' require 'getoptlong' opts = GetoptLong.new( [ "--debug", "-D", GetoptLong::NO_ARGUMENT], [ "--help", "-h", GetoptLong::NO_ARGUMENT], [ "--version", "-v", GetoptLong::NO_ARGUMENT ] ) DEFAULT_BEHAVIOUR = "./lib/botolo/bot/behaviour.rb" BOTOLO_PID = File.join(".", "botolo.pid") OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE $logger = Codesake::Commons::Logging.instance trap("INT") { @bot.stop; $logger.bye; File.delete(BOTOLO_PID); Kernel.exit(0); } opts.quiet=true debug = false begin opts.each do |opt, val| case opt when '--version' puts "#{Botolo::VERSION}" Kernel.exit(0) when '--help' puts "I'll put an help here... promise" Kernel.exit(0) when '--debug' debug = true end end rescue GetoptLong::InvalidOption => e $logger.helo "botolo", Botolo::VERSION, BOTOLO_PID $logger.err e.message Kernel.exit(-1) end behaviour_file = DEFAULT_BEHAVIOUR config_file = nil config_file = ARGV[0] if ARGV.count == 1 $logger.die "usage: botolo bot_configuration_file" if config_file.nil? $logger.helo "botolo", Botolo::VERSION, BOTOLO_PID @bot = Botolo::Bot::Engine.new({:config=>config_file}) $logger.log "#{@bot.name} is online" if @bot.online? $logger.log "#{@bot.name} is offline" unless @bot.online? if debug $logger.debug "forcing #{@bot.name} run" @bot.run else @bot.run if @bot.online? end @bot.infinite_loop