Sha256: 444f5d00b63029244f33a2620364d5317c71e9e05a9ac2cf649b510e02140645
Contents?: true
Size: 1.98 KB
Versions: 1
Compression:
Stored size: 1.98 KB
Contents
require "travis" require "travis/tools/system" require "travis/tools/assets" require "cgi" module Travis module Tools module Notification extend self DEFAULT = [:osx, :growl, :libnotify] ICON = Assets['notifications/icon.png'] def new(*list) list.concat(DEFAULT) if list.empty? notification = list.map { |n| get(n) }.detect { |n| n.available? } raise ArgumentError, "no notification system found (looked for #{list.join(", ")})" unless notification notification end def get(name) const = constants.detect { |c| c.to_s[/[^:]+$/].downcase == name.to_s } raise ArgumentError, "unknown notifications type %p" % name unless const const_get(const).new end class Dummy BIN_PATH = Assets['Travis CI.app/Contents/MacOS/Travis CI'] def notify(title, body) end def available? true end end class OSX BIN_PATH = Assets["notifications/Travis CI.app/Contents/MacOS/Travis CI"] def notify(title, body) system BIN_PATH, '-message', body.to_s, '-title', title.to_s, '-sender', 'org.travis-ci.Travis-CI' end def available? System.mac? and System.os_version.to_s >= '10.8' and nc_running? end def nc_running? system 'pgrep -u $(whoami) NotificationCenter >/dev/null' end end class Growl def initialize @command = "growlnotify" end def notify(title, body) system @command, '-n', 'Travis', '--image', ICON, '-m', body, title end def available? System.has? @command end end class LibNotify < Growl def initialize @command = "notify-send" @expire_time = 10_000 end def notify(title, body) system @command, "--expire-time=#{@expire_time}", "-i", ICON, title, CGI.escapeHTML(body) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
travis-1.6.3.travis.373.4 | lib/travis/tools/notification.rb |