Class: WatchmonkeyCli::Application

Inherits:
Object
  • Object
show all
Includes:
Colorize, Configuration::AppHelper, Core, Dispatch, OutputHelper, Checker::AppHelper, Helper
Defined in:
lib/watchmonkey_cli/application.rb,
lib/watchmonkey_cli/application/core.rb,
lib/watchmonkey_cli/application/colorize.rb,
lib/watchmonkey_cli/application/dispatch.rb,
lib/watchmonkey_cli/application/configuration.rb,
lib/watchmonkey_cli/application/output_helper.rb

Defined Under Namespace

Modules: Colorize, Core, Dispatch, OutputHelper Classes: Configuration

Constant Summary

Constants included from Colorize

Colorize::COLORMAP

Constants included from Helper

Helper::BYTE_UNITS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Checker::AppHelper

#init_checkers!, #start_checkers!, #stop_checkers!

Methods included from Configuration::AppHelper

#checker_directory, #checker_files, #config_directory, #config_filename, #config_files, #generate_config, #load_appconfig, #load_checkers!, #load_configs!, #wm_cfg_configfile, #wm_cfg_path

Methods included from Dispatch

#dispatch, #dispatch_generate_config, #dispatch_help, #dispatch_index, #dispatch_info

Methods included from Core

#_queueoff, #close_connections!, #enqueue, #enqueue_sub, #fetch_connection, #fire, #haltpoint, #hook, #logger, #logger_filename, #release_signals, #spawn_threads_and_run!, #trap_signals

Methods included from Colorize

#colorize

Methods included from OutputHelper

#abort, #debug, #error, #print, #puts, #warn

Methods included from Helper

#human_filesize, #human_number

Constructor Details

#initialize(env, argv) {|_self| ... } ⇒ Application

Returns a new instance of Application.

Yields:

  • (_self)

Yield Parameters:



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/watchmonkey_cli/application.rb', line 31

def initialize env, argv
  @boot = Time.current
  @env, @argv = env, argv
  @connections = {}
  @hooks = {}
  @monitor = Monitor.new
  @threads = []
  @queue = Queue.new
  @processed = 0
  @running = false
  @opts = {
    dump: false,             # (internal) if true app will dump itself and exit before running any checks
    dispatch: :index,        # (internal) action to dispatch
    check_for_updates: true, # -z flag
    colorize: true,          # -m flag
    debug: false,            # -d flag
    threads: 10,             # -t flag
    loop_forever: false,     # (internal) loop forever (app mode)
    loop_wait_empty: 1,      # (internal) time to wait in thread if queue is empty
    silent: false,           # -s flag
    quiet: false,            # -q flag
    stdout: STDOUT,          # (internal) STDOUT redirect
  }
  init_params
  yield(self)
end

Instance Attribute Details

#checkersObject (readonly)

Returns the value of attribute checkers.



3
4
5
# File 'lib/watchmonkey_cli/application.rb', line 3

def checkers
  @checkers
end

#connectionsObject (readonly)

Returns the value of attribute connections.



3
4
5
# File 'lib/watchmonkey_cli/application.rb', line 3

def connections
  @connections
end

#hooksObject (readonly)

Returns the value of attribute hooks.



3
4
5
# File 'lib/watchmonkey_cli/application.rb', line 3

def hooks
  @hooks
end

#optsObject (readonly)

Returns the value of attribute opts.



3
4
5
# File 'lib/watchmonkey_cli/application.rb', line 3

def opts
  @opts
end

#processedObject (readonly)

Returns the value of attribute processed.



3
4
5
# File 'lib/watchmonkey_cli/application.rb', line 3

def processed
  @processed
end

#queueObject (readonly)

Returns the value of attribute queue.



3
4
5
# File 'lib/watchmonkey_cli/application.rb', line 3

def queue
  @queue
end

#threadsObject (readonly)

Returns the value of attribute threads.



3
4
5
# File 'lib/watchmonkey_cli/application.rb', line 3

def threads
  @threads
end

Class Method Details

.dispatch(*a) ⇒ Object

Setup =



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/watchmonkey_cli/application.rb', line 15

def self.dispatch *a
  new(*a) do |app|
    app.load_appconfig
    app.parse_params
    begin
      app.dispatch
      app.haltpoint
    rescue Interrupt
      app.abort("Interrupted", 1)
    ensure
      app.fire(:wm_shutdown)
      app.debug "#{Thread.list.length} threads remain..."
    end
  end
end

Instance Method Details

#dump_and_exit!Object



95
96
97
98
99
100
# File 'lib/watchmonkey_cli/application.rb', line 95

def dump_and_exit!
  puts "   Queue: #{@queue.length}"
  puts " AppOpts: #{@opts}"
  puts "Checkers: #{@checkers.keys.join(",")}"
  exit 9
end

#init_paramsObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/watchmonkey_cli/application.rb', line 58

def init_params
  @optparse = OptionParser.new do |opts|
    opts.banner = "Usage: watchmonkey [options]"

    opts.separator(c "# Application options", :blue)
    opts.on("--generate-config [myconfig]", "Generates a example config in ~/.watchmonkey") {|s| @opts[:dispatch] = :generate_config; @opts[:config_name] = s }
    opts.on("-l", "--log [file]", "Log to file, defaults to ~/.watchmonkey/logs/watchmonkey.log") {|s| @opts[:logfile] = s || logger_filename }
    opts.on("-t", "--threads [NUM]", Integer, "Amount of threads to be used for checking (default: 10)") {|s| @opts[:threads] = s }
    opts.on("-s", "--silent", "Only print errors and infos") { @opts[:silent] = true }
    opts.on("-q", "--quiet", "Only print errors") { @opts[:quiet] = true }

    opts.separator("\n" << c("# General options", :blue))
    opts.on("-d", "--debug [lvl=1]", Integer, "Enable debug output") {|l| @opts[:debug] = l || 1 }
    opts.on("-m", "--monochrome", "Don't colorize output") { @opts[:colorize] = false }
    opts.on("-h", "--help", "Shows this help") { @opts[:dispatch] = :help }
    opts.on("-v", "--version", "Shows version and other info") { @opts[:dispatch] = :info }
    opts.on("-z", "Do not check for updates on GitHub (with -v/--version)") { @opts[:check_for_updates] = false }
    opts.on("--dump-core", "for developers") { @opts[:dump] = true }
  end
end

#parse_paramsObject



79
80
81
82
83
84
85
# File 'lib/watchmonkey_cli/application.rb', line 79

def parse_params
  @optparse.parse!(@argv)
rescue OptionParser::ParseError => e
  abort(e.message)
  dispatch(:help)
  exit 1
end

#running?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/watchmonkey_cli/application.rb', line 87

def running?
  @running
end

#sync(&block) ⇒ Object



91
92
93
# File 'lib/watchmonkey_cli/application.rb', line 91

def sync &block
  @monitor.synchronize(&block)
end