83 lines
2.1 KiB
JavaScript
83 lines
2.1 KiB
JavaScript
/*
|
|
* grunt-notify
|
|
* https://github.com/dylang/grunt-notify
|
|
*
|
|
* Copyright (c) 2013 Dylan Greene
|
|
* Licensed under the MIT license.
|
|
*/
|
|
'use strict';
|
|
|
|
var NOTIFY_TYPE = 'snarl';
|
|
|
|
var path = require('path');
|
|
var os = require('os');
|
|
var spawn = require('../util/spawn');
|
|
var findApp = require('../util/findApp');
|
|
|
|
var cmd = 'heysnarl.exe';
|
|
|
|
var IS_WINDOWS = os.type() === 'Windows_NT';
|
|
var DEFAULT_IMAGE = path.resolve(__dirname, '../../images/grunt-logo.png');
|
|
|
|
function findInstall() {
|
|
|
|
var INSTALL_DIR_1 = path.join('full phat', 'Snarl', 'tools');
|
|
var INSTALL_DIR_2 = path.join('Snarl', 'tools');
|
|
var PROGRAM_FILES = process.env.ProgramFiles || '';
|
|
var PROGRAM_FILES_X86 = process.env['ProgramFiles(x86)'] || '';
|
|
|
|
return findApp(cmd) ||
|
|
findApp(path.join(PROGRAM_FILES, INSTALL_DIR_1, cmd)) ||
|
|
findApp(path.join(PROGRAM_FILES_X86, INSTALL_DIR_1, cmd)) ||
|
|
findApp(path.join(PROGRAM_FILES, INSTALL_DIR_2, cmd)) ||
|
|
findApp(path.join(PROGRAM_FILES_X86, INSTALL_DIR_2, cmd));
|
|
}
|
|
|
|
var fullPathToApplication = findInstall();
|
|
|
|
function supported(options) {
|
|
|
|
options.debug({
|
|
IS_WINDOWS: IS_WINDOWS,
|
|
PROGRAM_FILES: process.env.ProgramFiles,
|
|
PROGRAM_FILES_X86: process.env['ProgramFiles(x86)'],
|
|
fullPathToApplication: fullPathToApplication,
|
|
snarl: fullPathToApplication || (IS_WINDOWS ? 'We couldn\'t find `heysnarl.exe` in your path or in "full phat/Snarl/tools" - maybe you have an older version?' : 'Snarl not available for this OS.')
|
|
});
|
|
|
|
return IS_WINDOWS && !!fullPathToApplication;
|
|
}
|
|
|
|
function escape(str) {
|
|
return str.toString().replace(/&/g, '&&').substr(0, 60);
|
|
}
|
|
|
|
function notify(options, cb) {
|
|
|
|
var args = [
|
|
'notify?' +
|
|
'title=' + escape(options.title) + '&' +
|
|
'text=' + escape(options.message) + '&' +
|
|
'icon=' + (options.image || DEFAULT_IMAGE)
|
|
];
|
|
|
|
options.debug({
|
|
cmd: fullPathToApplication,
|
|
args: args.join(' ')
|
|
});
|
|
|
|
spawn(fullPathToApplication || 'echo', args, function(code){
|
|
options.debug({return_code: code});
|
|
if (code < 200 && code > 0) {
|
|
cb(code);
|
|
} else {
|
|
cb();
|
|
}
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
name: NOTIFY_TYPE,
|
|
notify: notify,
|
|
supported: supported
|
|
}; |