class Eye::Cli

Private Class Methods

exit_on_failure?() click to toggle source
# File lib/eye/cli.rb, line 182
def self.exit_on_failure?
  true
end

Public Instance Methods

break(*masks) click to toggle source
# File lib/eye/cli.rb, line 107
def break(*masks)
  send_command(:break_chain, *masks)
end
check(conf) click to toggle source
# File lib/eye/cli.rb, line 125
def check(conf)
  conf = File.expand_path(conf) if conf && !conf.empty?

  Eye::Local.host = options[:host] if options[:host]
  Eye::Dsl.verbose = options[:verbose]

  say_load_result Eye::Controller.new.check(conf), :syntax => true
end
explain(conf) click to toggle source
# File lib/eye/cli.rb, line 137
def explain(conf)
  conf = File.expand_path(conf) if conf && !conf.empty?

  Eye::Local.host = options[:host] if options[:host]
  Eye::Dsl.verbose = options[:verbose]

  say_load_result Eye::Controller.new.explain(conf), :print_config => true, :syntax => true
end
history(*masks) click to toggle source
# File lib/eye/cli.rb, line 45
def history(*masks)
  res = cmd(:history_data, *masks)
  if !masks.empty? && res && res.empty?
    error!("command :history, objects not found!")
  end
  say render_history(res)
  say
end
info(mask = nil) click to toggle source
# File lib/eye/cli.rb, line 14
def info(mask = nil)
  res = cmd(:info_data, *Array(mask))
  if mask && res[:subtree] && res[:subtree].empty?
    error!("command :info, objects not found!")
  end
  say render_info(res)
  say
end
load(*configs) click to toggle source
# File lib/eye/cli.rb, line 56
def load(*configs)
  configs.map!{ |c| File.expand_path(c) } if !configs.empty?

  if options[:foreground]
    # in foreground we stop another server, and run just 1 current config version
    error!("foreground expected only one config") if configs.size > 1
    server_start_foreground(configs.first)

  elsif server_started?
    say_load_result cmd(:load, *configs)

  else
    server_start(configs)

  end
end
oinfo(mask = nil) click to toggle source
# File lib/eye/cli.rb, line 38
def oinfo(mask = nil)
  res = cmd(:short_data, *Array(mask))
  say render_info(res)
  say
end
quit() click to toggle source
# File lib/eye/cli.rb, line 76
def quit
  if options[:stop_all]
    Eye::Local.client_timeout = options[:timeout].to_i
    cmd(:stop_all, options[:timeout].to_i)
  end

  Eye::Local.client_timeout = 5
  res = _cmd(:quit)

  # if eye server got crazy, stop by force
  ensure_stop_previous_server if res != :corrupted_data

  # remove pid_file
  File.delete(Eye::Local.pid_path) if File.exists?(Eye::Local.pid_path)

  say "Quit :(", :yellow
end
signal(sig, *masks) click to toggle source
# File lib/eye/cli.rb, line 102
def signal(sig, *masks)
  send_command(:signal, sig, *masks)
end
status() click to toggle source
# File lib/eye/cli.rb, line 24
def status
  say ":status is deprecated, use :info instead", :yellow
  info
end
trace(mask = "") click to toggle source
# File lib/eye/cli.rb, line 112
def trace(mask = "")
  log_trace(mask)
end
version() click to toggle source
# File lib/eye/cli.rb, line 118
def version
  say Eye::ABOUT
end
watch(*args) click to toggle source
# File lib/eye/cli.rb, line 147
def watch(*args)
  error!("You should install watch utility") if `which watch`.empty?

  cmd = if `watch --version 2>&1`.chop > '0.2.0'
    "watch -n 1 --color #{$0} i #{args * ' '}"
  else
    "watch -n 1 #{$0} i #{args * ' '}"
  end

  pid = Process.spawn(cmd)
  Process.waitpid(pid)
rescue Interrupt
end
xinfo() click to toggle source
# File lib/eye/cli.rb, line 31
def xinfo
  res = cmd(:debug_data, :config => options[:config])
  say render_debug_info(res)
  say
end

Private Instance Methods

error!(msg) click to toggle source
# File lib/eye/cli.rb, line 163
def error!(msg)
  say msg, :red
  exit 1
end
log_trace(tag = '') click to toggle source
# File lib/eye/cli.rb, line 173
def log_trace(tag = '')
  log_file = cmd(:logger_dev)
  if log_file && File.exists?(log_file)
    Process.exec "tail -n 100 -f #{log_file} | grep '#{tag}'"
  else
    error! "log file not found #{log_file.inspect}"
  end
end
print(msg, new_line = true) click to toggle source