#!/usr/bin/env ruby

require File.dirname(__FILE__) + '/../lib/amqp_utils/command'

class PurgeCommand < AmqpUtils::Command
  def prepare_options(options)
    options.banner <<-BANNER.unindent
    Removes all messages from the supplied queues.
    
      #{command_name} <queue> [<another queue> ...]
    BANNER
  end

  def validate
    Trollop::die "need at least one queue name" if args.empty?
  end

  def execute
    mq = MQ.new
    @queues = args
    purge_one = lambda do
      queue = @queues.shift
      puts "Purging #{queue}..."
      mq.queue(queue, :passive => true).purge
      if @queues.empty?
        AMQP.stop { EM.stop }
      else
        EM.next_tick(&purge_one)
      end
    end
    EM.next_tick(&purge_one)
  end
end

PurgeCommand.run
