Sha256: e214a2d7480f86b5e15e09e3834c564654db1678465df330b596e0cde75c475e
Contents?: true
Size: 1.44 KB
Versions: 9
Compression:
Stored size: 1.44 KB
Contents
require 'digest/sha1' module SnowmanIO # The command line interface for SnowmanIO. class CLI attr_reader :options def self.run options = Options.new.parse!(ARGV) new(options).run end def initialize(options = {}) @options = options end def run setup_logger # Self-pipe for deferred signal-handling (http://cr.yp.to/docs/selfpipe.html) self_read, self_write = IO.pipe %w(INT TERM USR1 USR2 TTIN).each do |sig| begin trap sig do self_write.puts(sig) end rescue ArgumentError puts "Signal #{sig} not supported" end end launcher = Launcher.new(options) begin launcher.start while readable_io = IO.select([self_read]) signal = readable_io.first[0].gets.strip handle_signal(signal) end rescue Interrupt SnowmanIO.logger.info 'Shutting down' launcher.stop exit(0) end end private def handle_signal(sig) SnowmanIO.logger.debug "Received #{sig} signal" case sig when 'TERM' raise Interrupt when 'INT' raise Interrupt end end def setup_logger Celluloid.logger = (options[:verbose] ? SnowmanIO.logger : nil) if options[:verbose] SnowmanIO.logger.level = ::Logger::DEBUG else SnowmanIO.logger.level = ::Logger::INFO end end end end
Version data entries
9 entries across 9 versions & 1 rubygems