From a44339cc34180c3e35e414094033061d44e27266 Mon Sep 17 00:00:00 2001 From: Gregory Eremin Date: Sat, 16 Aug 2014 16:36:19 +0700 Subject: [PATCH] Add cli --- bin/bsq | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 bin/bsq diff --git a/bin/bsq b/bin/bsq new file mode 100755 index 0000000..7c43ade --- /dev/null +++ b/bin/bsq @@ -0,0 +1,107 @@ +#!/usr/bin/env ruby +require 'optparse' +require 'json' +require 'burlesque' + +BANNER = <<-EOL +Burlesque Ruby client v.#{Burlesque::VERSION} + +Usage: + Publish: + $ bsq pub urgent "Process this message as soon as possible!" + or + $ cat urgent-183.txt | bsq pub urgent + Subscribe: + $ bsq sub urgent > urgent-184.txt + Status: + $ bsq status + Debug: + $ bsq debug + +Options: +EOL + +def error msg = nil + unless msg.nil? + puts "\033[31mError: #{msg}\e[0m\n\n" + end + + puts $options.help + exit(1) +end + +Burlesque.configure + +$options = OptionParser.new do |opts| + opts.banner = BANNER + + opts.on('-h', '--host [HOST]', 'Burlesque host') do |val| + Burlesque.config.host = val + end + + opts.on('-p', '--port [PORT]', Integer, 'Burlesque port') do |val| + Burlesque.config.port = val + end + + opts.on('-t', '--timeout [TIMEOUT]', Integer, 'Subscription timeout') do |val| + Burlesque.config.timeout = val + end + + opts.on('-v', '--version', 'Display Burlesque Ruby client version') do + puts Burlesque::VERSION + exit(0) + end + + opts.on('--help', 'Display this help message') do + puts $options.help + exit(0) + end +end + +begin + $options.parse! +rescue OptionParser::InvalidOption => e + error(e.message) +end + +client = Burlesque::Client.new + +case ARGV[0] +when 'pub' + queue, msg = nil, nil + + case ARGV.length + when 3 + queue = ARGV[1] + msg = ARGV[2] + when 2 + queue = ARGV[1] + msg = STDIN.read + else + error + end + + ok = client.publish(queue, msg) + exit(ok ? 0 : 1) +when 'sub' + queue = nil + + if ARGV.length == 2 + queue = ARGV[1] + else + error + end + + res = client.subscribe(queue) + if res.nil? + exit(1) + else + puts res[:message] + end +when 'status' + puts JSON.pretty_generate(client.status) +when 'debug' + puts JSON.pretty_generate(client.status) +else + error +end