#!/usr/bin/env ruby
#
# Created on 2008-4-12.
# Copyright (c) 2008. All rights reserved.
begin
require 'rubygems'
rescue LoadError
# no rubygems to load, so we fail silently
end
require "main"
require "cliaws"
Main {
mixin(:qname) do
argument("queue_name") do
required
argument_required
end
end
mode("create") do
mixin :qname
description "Create a new queue"
def run
Cliaws.sqs.create(queue_name)
puts "Queue #{queue_name} was created."
end
end
mode("delete") do
mixin :qname
description "Deletes a queue"
option("force") { cast :boolean; default false }
def run
Cliaws.sqs.delete(queue_name, params["force"].value)
puts "Queue #{queue_name} was deleted."
end
end
mode("list") do
description "Lists the available queues"
def run
puts Cliaws.sqs.list
end
end
mode("size") do
mixin :qname
description "Prints the queue's size."
def run
puts Cliaws.sqs.size(queue_name)
end
end
mode("receive") do
mixin :qname
description "Receive (but keep) a message from the named queue."
def run
puts Cliaws.sqs.receive(queue_name)
end
end
mode("pop") do
mixin :qname
description "Retrieve and delete a message from the named queue."
def run
puts Cliaws.sqs.pop(queue_name)
end
end
mode("push") do
mixin :qname
option("data") { optional; argument_required }
argument("data_file") { optional; argument_required }
description "Pushes (sends) data from --data, data_file or STDIN to the named queue."
def run
data = case
when params["data"].given?
params["data"].value
when params["data_file"].given?
File.read(params["data_file"].value)
else
STDIN.read
end
Cliaws.sqs.push(queue_name, data)
puts "Pushed #{data.size} bytes to queue #{queue_name}"
end
end
mode("info") do
mixin :qname
def run
info = Cliaws.sqs.info(queue_name)
puts "Visibility: #{info[:visibility_timeout]}"
puts "Number of messages: #{info[:size]}"
end
end
def queue_name
params["queue_name"].value
end
}