require_relative "rubysermon/version"
require_relative "rubysermon/mod_loader"
require_relative "rubysermon/mod_template"
require_relative "rubysermon/configurator"
require "date"
module Rubysermon
LIB_PATH = File.expand_path(File.dirname(__FILE__))
APP_PATH = "#{LIB_PATH}/.."
MOD_PATH = "#{LIB_PATH}/rubysermon/mod"
class App
def initialize
@config = {repeat: 60}
@running_mods = []
@config_path = "#{LIB_PATH}/rubysermon/config.json"
config()
@enabled_mods = @config[:modules].to_a
start_mods()
start_fetch_process_sleep_cycle()
end
private
def config
configurator = Configurator.new(@config_path)
config = configurator.get_settings()
@config.merge!(config)
end
def start_mods
@enabled_mods.each do |mod| load_mod(mod) end
end
def load_mod(mod_name)
begin
mod = ModLoader.load(mod_name)
@running_mods.push(mod)
rescue ModLoaderException => e
$stderr = e.message
end
end
def start_fetch_process_sleep_cycle
if (msg = cannot_start_fetch_process_sleep_cycle?)
abort(msg)
end
while true
current_time = DateTime.now()
@running_mods.each do |mod|
result = mod.results
notify = mod.notify?
end
sleep @config[:repeat]
end
end
def cannot_start_fetch_process_sleep_cycle?
if @config[:repeat].to_i < 1
return "Repeat cycle too short"
end
false
end
end
end