mose/zabbix-ruby-client

View on GitHub
lib/zabbix-ruby-client/cli.rb

Summary

Maintainability
A
0 mins
Test Coverage
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