Sha256: c1f7b764be579d9a4823bc7c91c92c7a679985df12daa5ddbfca94f7d98c7bd2
Contents?: true
Size: 1.83 KB
Versions: 8
Compression:
Stored size: 1.83 KB
Contents
require 'optparse' class Pigeon::Launcher # == Class Methods ======================================================== def self.launch(engine = Pigeon::Engine, *arguments) arguments = %w[ start ] if (arguments.empty?) new(engine).handle_args(*arguments) end # == Instance Methods ===================================================== def initialize(with_engine = Pigeon::Engine) @engine = with_engine yield(self) if (block_given?) end def handle_args(*args) op = OptionParser.new command = op.parse(*args.flatten).first begin case (command) when 'start' @engine.start(&method(:start)) when 'stop' @engine.stop(&method(:stop)) when 'restart' @engine.restart(&method(:restart)) when 'status' @engine.status(&method(:status)) when 'run' @engine.logger = Pigeon::Logger.new(STDOUT) @engine.run(&method(:run)) else usage end rescue Interrupt shutdown(pid) exit(0) end end def run(pid) puts "#{@engine.name} now running. [%d]" % pid puts "Use ^C to terminate." end def start(pid) puts "#{@engine.name} now running. [%d]" % pid end def stop(pid) if (pid) puts "#{@engine.name} shut down. [%d]" % pid else puts "#{@engine.name} was not running." end end def status(pid) if (pid) puts "#{@engine.name} running. [%d]" % pid else puts "#{@engine.name} is not running." end end def restart(pid, old_pid) if (old_pid) puts "#{@engine.name} terminated. [%d]" % old_pid end puts "#{@engine.name} now running. [%d]" % pid end def shutdown(pid) puts "Shutting down." end def usage puts "Usage: #{File.basename($0)} [start|stop|restart|status|run]" end end
Version data entries
8 entries across 8 versions & 1 rubygems