| # 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 |