blob: d8bd6d84f91e20c69145f3abe733e51ee3c415e5 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with this
# work for additional information regarding copyright ownership. The ASF
# licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
# Let's see if we can use Growl. Must be running from console in verbose mode.
if $stdout.isatty && verbose
def growl_notify(type, title, message)
begin
# Loading Ruby Cocoa can slow the build down (hooks on Object class), so we're
# saving the best for last and only requiring it at the very end.
require 'osx/cocoa'
icon = OSX::NSApplication.sharedApplication.applicationIconImage
icon = OSX::NSImage.alloc.initWithContentsOfFile(File.join(File.dirname(__FILE__), '../resources/buildr.icns'))
# Register with Growl, that way you can turn notifications on/off from system preferences.
OSX::NSDistributedNotificationCenter.defaultCenter.
postNotificationName_object_userInfo_deliverImmediately(:GrowlApplicationRegistrationNotification, nil,
{ :ApplicationName=>'Buildr', :AllNotifications=>['Completed', 'Failed'],
:ApplicationIcon=>icon.TIFFRepresentation }, true)
OSX::NSDistributedNotificationCenter.defaultCenter.
postNotificationName_object_userInfo_deliverImmediately(:GrowlNotification, nil,
{ :ApplicationName=>'Buildr', :NotificationName=>type,
:NotificationTitle=>title, :NotificationDescription=>message }, true)
rescue Exception
# We get here in two cases: system doesn't have Growl installed so one of the OSX
# calls raises an exception; system doesn't have osx/cocoa, e.g. MacPorts Ruby 1.9,
# so we also need to rescue LoadError.
end
end
Buildr.application.on_completion { |title, message| growl_notify('Completed', title, message) if verbose }
Buildr.application.on_failure { |title, message, ex| growl_notify('Failed', title, message) if verbose }
end