You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/** * 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() {}
|