1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**
- * Wrapper for the growly module
- */
- var checkGrowl = require('../lib/checkGrowl');
- var utils = require('../lib/utils');
- var growly = require('growly');
- var EventEmitter = require('events').EventEmitter;
- var util = require('util');
- var errorMessageNotFound =
- "Couldn't connect to growl (might be used as a fallback). Make sure it is running";
- module.exports = Growl;
- var hasGrowl;
- function Growl(options) {
- options = utils.clone(options || {});
- if (!(this instanceof Growl)) {
- return new Growl(options);
- }
- growly.appname = options.name || 'Node';
- this.options = options;
- EventEmitter.call(this);
- }
- util.inherits(Growl, EventEmitter);
- function notifyRaw(options, callback) {
- growly.setHost(this.options.host, this.options.port);
- options = utils.clone(options || {});
- if (typeof options === 'string') {
- options = { title: 'node-notifier', message: options };
- }
- callback = utils.actionJackerDecorator(this, options, callback, function(
- data
- ) {
- if (data === 'click') {
- return 'click';
- }
- if (data === 'timedout') {
- return 'timeout';
- }
- return false;
- });
- options = utils.mapToGrowl(options);
- if (!options.message) {
- callback(new Error('Message is required.'));
- return this;
- }
- options.title = options.title || 'Node Notification:';
- if (hasGrowl || !!options.wait) {
- var localCallback = options.wait ? callback : noop;
- growly.notify(options.message, options, localCallback);
- if (!options.wait) callback();
- return this;
- }
- checkGrowl(growly, function(_, didHaveGrowl) {
- hasGrowl = didHaveGrowl;
- if (!didHaveGrowl) return callback(new Error(errorMessageNotFound));
- growly.notify(options.message, options);
- callback();
- });
- return this;
- }
- Object.defineProperty(Growl.prototype, 'notify', {
- get: function() {
- if (!this._notify) this._notify = notifyRaw.bind(this);
- return this._notify;
- }
- });
- function noop() {}
|