require "thor" require "zabbix-ruby-client" module ZabbixRubyClient class Cli < Thor include Thor::Actions def self.source_root File.expand_path("../../../templates", __FILE__) end default_task :help class_option :configfile, aliases: "-c", banner: "PATH", default: File.expand_path("config.yml", Dir.pwd), desc: "Path to the configuration file to use" class_option :taskfile, aliases: "-t", banner: "PATH", default: File.expand_path("minutely.yml", Dir.pwd), desc: "Path to the list of plugins to execute" desc "init", "Initialize a new zabbix ruby client" def init(name = "zabbix-ruby-client") directory "client", name end desc "show", "Displays in console what are the collected data ready to be sent" def show collect(options).show end desc "upload", "Collects and sends data to the zabbix server" def upload collect(options).upload end no_commands do def collect(options) config = YAML::load_file(options[:configfile]) if File.exists? options[:taskfile] tasks = YAML::load_file(options[:taskfile]) else tasks = config['plugins'] end config['server'] = File.basename(options[:configfile],'.yml') config['taskfile'] = File.basename(options[:taskfile],'.yml') zrc = ZabbixRubyClient::Runner.new(config, tasks) zrc.collect zrc end end end end