master/lib/guard/notifier.rb
Rémy Coutable b471405f4d Merge branch 'master' of https://github.com/anithri/guard into anithri-master-55
Conflicts:
	lib/guard/notifier.rb
	spec/guard/dsl_spec.rb
	spec/guard/listeners/polling_spec.rb
	spec/guard/notifier_spec.rb
2011-05-27 17:56:18 +02:00

74 lines
1.8 KiB
Ruby

require 'rbconfig'
require 'pathname'
require 'guard/ui'
module Guard
module Notifier
def self.turn_off
ENV["GUARD_NOTIFY"] = 'false'
end
def self.turn_on
ENV["GUARD_NOTIFY"] = 'true'
case Config::CONFIG['target_os']
when /darwin/i
require_growl
when /linux/i
require_libnotify
end
end
def self.notify(message, options = {})
if enabled?
image = options[:image] || :success
title = options[:title] || "Guard"
case Config::CONFIG['target_os']
when /darwin/i
require_growl # need for guard-rspec formatter that is called out of guard scope
Growl.notify message, :title => title, :icon => image_path(image), :name => "Guard"
when /linux/i
require_libnotify # need for guard-rspec formatter that is called out of guard scope
Libnotify.show :body => message, :summary => title, :icon_path => image_path(image)
end
end
end
def self.enabled?
ENV["GUARD_NOTIFY"] == 'true'
end
private
def self.image_path(image)
images_path = Pathname.new(File.dirname(__FILE__)).join('../../images')
case image
when :failed
images_path.join("failed.png").to_s
when :pending
images_path.join("pending.png").to_s
when :success
images_path.join("success.png").to_s
else
# path given
image
end
end
def self.require_growl
require 'growl'
rescue LoadError
turn_off
UI.info "Please install growl gem for Mac OS X notification support and add it to your Gemfile"
end
def self.require_libnotify
require 'libnotify'
rescue LoadError
turn_off
UI.info "Please install libnotify gem for Linux notification support and add it to your Gemfile"
end
end
end