Class: Zabby::Runner

Inherits:
Object
  • Object
show all
Includes:
Singleton, ShellHelpers
Defined in:
lib/zabby/runner.rb

Overview

This is the main interpreter. Additional shell commands are defined in the ShellHelpers module.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ShellHelpers

desc, #help, #logged_in?, #login, #logout, method_added, #set, show_helpers_doc, #version, #zabbix_classes

Constructor Details

#initialize(&block) ⇒ Runner

Returns a new instance of Runner.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/zabby/runner.rb', line 23

def initialize &block
  @config = Zabby::Config.new
  @connection = Zabby::Connection.new
  @pure_binding = instance_eval "binding"

  # Configure the application
  run(&block) if block_given?

  # Configure Readline for the shell, if available
  if Object.const_defined?(:Readline)
    @readline = true
    Readline.basic_word_break_characters = ""
 Readline.completion_append_character = nil
 #Readline.completion_proc = completion_proc

 $last_res = nil
  else
    # Without Readline the Zabby shell is not available.
    @readline = false
  end
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



21
22
23
# File 'lib/zabby/runner.rb', line 21

def config
  @config
end

#connectionObject (readonly)

Returns the value of attribute connection.



21
22
23
# File 'lib/zabby/runner.rb', line 21

def connection
  @connection
end

Instance Method Details

#run(command_file = nil, &block) ⇒ Object

Execute script file and/or instruction block

Parameters:

  • command_file (String) (defaults to: nil)

    Filename containing commands to execute.

  • block (Proc)

    A block containing commands to execute.



48
49
50
51
52
53
54
# File 'lib/zabby/runner.rb', line 48

def run(command_file = nil, &block)
  unless command_file.nil?
    commands = File.read(command_file)
    instance_eval(commands, command_file, 1)
  end
  instance_eval(&block) if block_given?
end

#shellObject

Execute an irb like shell in which we can type Zabby commands.

Raises:

  • (RuntimeError)


57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/zabby/runner.rb', line 57

def shell
  raise RuntimeError.new("Shell cannot run because 'readline' is missing.") if !@readline

  puts <<HEADER
Zabby Shell #{Zabby::VERSION}

** This is a simple irb like Zabbix Shell. Multiline commands do not work for e.g. **
Type "help" for online documentation.
HEADER
  loop do
    cmd = Readline.readline('zabby> ')

    exit(0) if cmd.nil? or cmd == 'exit'
    next if cmd == ""
    Readline::HISTORY.push(cmd)

    execute(cmd)
  end
end