vrobot4/source/main.rb

67 lines
1.4 KiB
Ruby
Raw Normal View History

require './common.rb'
require './module.rb'
require './server.rb'
require 'yaml'
module Vrobot4
2017-08-11 19:40:43 -07:00
private
def self.loadServer servinfo
type = servinfo["type"]
serv = Server::get_server_type(type).new(servinfo)
servinfo["modules"].each \
{|mod| serv.load_mod mod} if servinfo.key? "modules"
serv
end
def self.loadBot botinfo
servers = []
botinfo["servers"].each {|servinfo| servers << loadServer(servinfo)}
2017-08-08 21:00:28 -07:00
{info: botinfo, servs: servers}
end
def self.runBots bots
thrds = []
bots.each do |bot|
bot[:servs].each {|serv| thrds << Thread.new {serv.connect}}
end
thrds.each {|th| th.join}
end
2017-08-11 19:40:43 -07:00
public
# Runs the program.
# @param cfg [IO] configuration file to load
2017-08-11 15:16:16 -07:00
def self.main cfg
log :INFO, "vrobot version", Version
2017-08-09 00:52:34 -07:00
begin
2017-08-11 15:16:16 -07:00
cfg = YAML.load cfg.read
2017-08-09 00:52:34 -07:00
rescue
log :ERROR, "error reading bot config:", $!
return
end
Vrobot4.debug = cfg["debug"] if cfg.key? "debug"
cfg["loadmods"].each {|mod| load mod, true}
begin
bots = []
cfg["bots"].each {|botinfo| bots << loadBot(botinfo)}
log :DEBUGV, "bots:", bots.to_s
rescue
2017-08-09 00:52:34 -07:00
log :ERROR, "error loading bot config:",
$!.to_s + "\n" + $!.backtrace.first(3).join("\n")
return
end
2017-08-09 00:52:34 -07:00
runBots bots
end
end
2017-08-11 15:16:16 -07:00
Vrobot4.main open("bot.yml")
## EOF