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