public
Description: A command-line client for Amazon Web Services
Homepage: http://rubyforge.org/projects/cliaws
Clone URL: git://github.com/francois/cliaws.git
cliaws / bin / clisqs
100755 105 lines (92 sloc) 2.25 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/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
}