Sha256: 7cc02aaf6752118ce209273917fa8afab8eaf970593948ef3142e9fc370a15fa

Contents?: true

Size: 1.29 KB

Versions: 26

Compression:

Stored size: 1.29 KB

Contents

class Hayabusa
  def initialize_cmdline
    @cmds = {}
    
    Thread.new do
      begin
        $stdin.each_line do |line|
          called = 0
          @cmds.each do |key, connects|
            data = {}
            
            if key.is_a?(Regexp)
              if line.match(key)
                connects.each do |conn|
                  called += 1
                  conn[:block].call(data)
                end
              end
            else
              raise "Unknown class for 'cmd_connect': '#{key.class.name}'."
            end
          end
          
          if called == 0
            print "Unknown command: '#{line.strip}'.\n"
          end
        end
      rescue => e
        self.handle_error(e)
      end
    end
    
    self.cmd_connect(/^\s*restart\s*$/i, &self.method(:cmdline_on_restart_cmd))
    self.cmd_connect(/^\s*stop\s*$/i, &self.method(:cmdline_on_stop_cmd))
  end
  
  def cmdline_on_restart_cmd(data)
    print "Restart will begin shortly.\n"
    self.should_restart = true
  end
  
  def cmdline_on_stop_cmd(data)
    print "Stopping appserver.\n"
    self.stop
  end
  
  #Connects a proc to a specific command in the command-line (key should be a regex).
  def cmd_connect(cmd, &block)
    @cmds[cmd] = [] if !@cmds.key?(cmd)
    @cmds[cmd] << {:block => block}
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
hayabusa-0.0.6 lib/hayabusa_ext/cmdline.rb
hayabusa-0.0.5 lib/hayabusa_ext/cmdline.rb
hayabusa-0.0.4 lib/hayabusa_ext/cmdline.rb
hayabusa-0.0.3 lib/hayabusa_ext/cmdline.rb
hayabusa-0.0.2 lib/hayabusa_ext/cmdline.rb
hayabusa-0.0.1 lib/hayabusa_ext/cmdline.rb