class Cuniculus::CLI

Attributes

options[R]

Public Instance Methods

handle_signal(sig) click to toggle source
   # File lib/cuniculus/cli.rb
64 def handle_signal(sig)
65   case sig
66   when "INT", "TERM"
67     raise Interrupt
68   end
69 end
launch(pipe_reader) click to toggle source
   # File lib/cuniculus/cli.rb
43 def launch(pipe_reader)
44   config = Cuniculus.config
45   supervisor = Cuniculus::Supervisor.new(config)
46 
47   begin
48     Cuniculus.logger.info("Starting process")
49     supervisor.start
50 
51     while (readable_io = IO.select([pipe_reader]))
52       signal = readable_io.first[0].gets.strip
53       handle_signal(signal)
54     end
55   rescue Interrupt
56     Cuniculus.logger.info("Interrupt received; shutting down")
57     supervisor.stop
58     Cuniculus.logger.info("Shutdown complete")
59   end
60 
61   exit(0)
62 end
parse(args = ARGV) click to toggle source
   # File lib/cuniculus/cli.rb
17 def parse(args = ARGV)
18   @options = parse_options(args)
19 
20   return unless options[:require]
21 
22   raise ArgumentError, "Invalid '--require' argument: #{options[:require]}. File does not exist" unless File.exist?(options[:require])
23   raise ArgumentError, "Invalid '--require' argument: #{options[:require]}. Cannot be a directory" if File.directory?(options[:require])
24   require File.join(Dir.pwd, options[:require])
25 end
run() click to toggle source
   # File lib/cuniculus/cli.rb
27 def run
28   pipe_reader, pipe_writer = IO.pipe
29   sigs = %w[INT TERM]
30 
31   sigs.each do |sig|
32     trap sig do
33       pipe_writer.puts(sig)
34     end
35   rescue ArgumentError
36     puts "Signal #{sig} not supported"
37   end
38 
39 
40   launch(pipe_reader)
41 end

Private Instance Methods

option_parser(opts) click to toggle source
   # File lib/cuniculus/cli.rb
80 def option_parser(opts)
81   OptionParser.new do |o|
82     o.on("-r", "--require [PATH]", "location of file required before starting consumer") do |arg|
83       opts[:require] = arg
84     end
85 
86     o.on("-I", "--include [DIR]", "add directory to LOAD_PATH") do |arg|
87       $LOAD_PATH << arg
88     end
89 
90     o.on "-V", "--version", "print version and exit" do |arg|
91       puts "Cuniculus #{Cuniculus.version}"
92       exit(0)
93     end
94   end
95 end
parse_options(argv) click to toggle source
   # File lib/cuniculus/cli.rb
73 def parse_options(argv)
74   opts = {}
75   @parser = option_parser(opts)
76   @parser.parse!(argv)
77   opts
78 end