-
-
Save paulmooring/eff9d2e33d77e9317442 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'optparse' | |
require 'json' | |
require 'hipchat-api' | |
def send_message(message, format, options) | |
@hipchat_api.rooms_message( | |
options[:room], | |
options[:from], | |
message, | |
options[:notify], | |
options[:color], | |
format | |
) | |
end | |
opts = {:msgs => []} | |
option_parser = OptionParser.new do |o| | |
o.banner = "Usage: #{$0} [-n] [-vq] [-m <message>] [-f <from>] [-c <color>]" | |
o.on("-v","--verbose", "Raise verbosity") do | |
if opts[:verbosity].respond_to? :+ | |
opts[:verbosity] += 1 | |
else | |
opts[:verbosity] = 1 | |
end | |
end | |
o.on("-q","--quiet", "Lower verbosity") do | |
if opts[:verbosity].respond_to? :- | |
opts[:verbosity] -= 1 | |
else | |
opts[:verbosity] = -1 | |
end | |
end | |
o.on("-t", "--api-token TOKEN", "HipChat API token") do |tkn| | |
opts[:api_token] = tkn | |
end | |
o.on("-n", "--notify", "Notify users") do | |
opts[:notify] = true | |
end | |
o.on("-m", "--msg MESSAGE", "A message to send") do |msg| | |
opts[:msgs] << msg | |
end | |
o.on("-r", "--room ROOM", "Room to message") do |room| | |
opts[:room] = room | |
end | |
o.on("-f", "--from NAME", "The name the messages are from") do |name| | |
opts[:from] = name | |
end | |
o.on("-c", "--color COLOR", [:gray, :yellow, :red, :green, :purple], | |
"The background color") do |color| | |
opts[:color] = color.to_s | |
end | |
end | |
option_parser.parse! | |
opts[:stdin] = STDIN.read | |
# Fallback on config from homedir | |
config = JSON.parse(::File.read("#{ENV['HOME']}/.hc.json")) | |
config.each_pair do |k,v| | |
opts[k.to_sym] = v unless opts.has_key?(k.to_sym) | |
end | |
unless ['gray', 'yellow', 'red', 'green', 'purple'].include? opts[:color] | |
opts[:color] = 'gray' | |
end | |
@hipchat_api = HipChat::API.new(opts[:api_token]) | |
opts[:msgs].each do |m| | |
send_message(m, 'html', opts) | |
end | |
send_message("/quote #{opts[:stdin]}", 'text', opts) | |
# Send it on to stdout like tee | |
print opts[:stdin] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment