Skip to content

Instantly share code, notes, and snippets.

@paulmooring
Created June 10, 2014 22:56
Show Gist options
  • Save paulmooring/eff9d2e33d77e9317442 to your computer and use it in GitHub Desktop.
Save paulmooring/eff9d2e33d77e9317442 to your computer and use it in GitHub Desktop.
#!/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