Вход Регистрация
Файл: error-kitty/node_modules/mocha/node_modules/growl/lib/growl.js
Строк: 159
<?php
// Growl - Copyright TJ Holowaychuk <tj@vision-media.ca> (MIT Licensed)

/**
 * Module dependencies.
 */

var exec = require('child_process').exec
  
, fs = require('fs')
  , 
path = require('path')
  , 
exists = fs.existsSync || path.existsSync
  
, os = require('os')
  , 
quote = JSON.stringify
  
, cmd;

function 
which(name) {
  var 
paths = process.env.PATH.split(':');
  var 
loc;
  
  for (var 
i = 0, len = paths.length; i < len; ++i) {
    
loc = path.join(paths[i], name);
    if (
exists(loc)) return loc;
  }
}

switch(
os.type()) {
  case 
'Darwin':
    if (
which('terminal-notifier')) {
      
cmd = {
          
type: "Darwin-NotificationCenter"
        
, pkg: "terminal-notifier"
        
, msg: '-message'
        
, title: '-title'
        
, subtitle: '-subtitle'
        
, priority: {
              
cmd: '-execute'
            
, range: []
          }
      };
    } else {
      
cmd = {
          
type: "Darwin-Growl"
        
, pkg: "growlnotify"
        
, msg: '-m'
        
, sticky: '--sticky'
        
, priority: {
              
cmd: '--priority'
            
, range: [
                -
2
              
, -1
              
, 0
              
, 1
              
, 2
              
, "Very Low"
              
, "Moderate"
              
, "Normal"
              
, "High"
              
, "Emergency"
            
]
          }
      };
    }
    break;
  case 
'Linux':
    
cmd = {
        
type: "Linux"
      
, pkg: "notify-send"
      
, msg: ''
      
, sticky: '-t 0'
      
, icon: '-i'
      
, priority: {
          
cmd: '-u'
        
, range: [
            
"low"
          
, "normal"
          
, "critical"
        
]
      }
    };
    break;
  case 
'Windows_NT':
    
cmd = {
        
type: "Windows"
      
, pkg: "growlnotify"
      
, msg: ''
      
, sticky: '/s:true'
      
, title: '/t:'
      
, icon: '/i:'
      
, priority: {
            
cmd: '/p:'
          
, range: [
              -
2
            
, -1
            
, 0
            
, 1
            
, 2
          
]
        }
    };
    break;
}

/**
 * Expose `growl`.
 */

exports = module.exports = growl;

/**
 * Node-growl version.
 */

exports.version = '1.4.1'

/**
 * Send growl notification _msg_ with _options_.
 *
 * Options:
 *
 *  - title   Notification title
 *  - sticky  Make the notification stick (defaults to false)
 *  - priority  Specify an int or named key (default is 0)
 *  - name    Application name (defaults to growlnotify)
 *  - image
 *    - path to an icon sets --iconpath
 *    - path to an image sets --image
 *    - capitalized word sets --appIcon
 *    - filename uses extname as --icon
 *    - otherwise treated as --icon
 *
 * Examples:
 *
 *   growl('New email')
 *   growl('5 new emails', { title: 'Thunderbird' })
 *   growl('Email sent', function(){
 *     // ... notification sent
 *   })
 *
 * @param {string} msg
 * @param {object} options
 * @param {function} fn
 * @api public
 */

function growl(msg, options, fn) {
  var 
image
    
, args
    
, options = options || {}
    , 
fn = fn || function(){};

  
// noop
  
if (!cmd) return fn(new Error('growl not supported on this platform'));
  
args = [cmd.pkg];

  
// image
  
if (image = options.image) {
    switch(
cmd.type) {
      case 
'Darwin-Growl':
        var 
flag, ext = path.extname(image).substr(1)
        
flag = flag || ext == 'icns' && 'iconpath'
        
flag = flag || /^[A-Z]/.test(image) && 'appIcon'
        
flag = flag || /^png|gif|jpe?g$/.test(ext) && 'image'
        
flag = flag || ext && (image = ext) && 'icon'
        
flag = flag || 'icon'
        
args.push('--' + flag, quote(image))
        break;
      case 
'Linux':
        
args.push(cmd.icon, quote(image));
        
// libnotify defaults to sticky, set a hint for transient notifications
        
if (!options.sticky) args.push('--hint=int:transient:1');
        break;
      case 
'Windows':
        
args.push(cmd.icon + quote(image));
        break;
    }
  }

  
// sticky
  
if (options.sticky) args.push(cmd.sticky);

  
// priority
  
if (options.priority) {
    var 
priority = options.priority + '';
    var 
checkindexOf = cmd.priority.range.indexOf(priority);
    if (~
cmd.priority.range.indexOf(priority)) {
      
args.push(cmd.priority, options.priority);
    }
  }

  
// name
  
if (options.name && cmd.type === "Darwin-Growl") {
    
args.push('--name', options.name);
  }

  switch(
cmd.type) {
    case 
'Darwin-Growl':
      
args.push(cmd.msg);
      
args.push(quote(msg));
      if (
options.title) args.push(quote(options.title));
      break;
    case 
'Darwin-NotificationCenter':
      
args.push(cmd.msg);
      
args.push(quote(msg));
      if (
options.title) {
        
args.push(cmd.title);
        
args.push(quote(options.title));
      }
      if (
options.subtitle) {
        
args.push(cmd.subtitle);
        
args.push(quote(options.subtitle));
      }
      break;
    case 
'Darwin-Growl':
      
args.push(cmd.msg);
      
args.push(quote(msg));
      if (
options.title) args.push(quote(options.title));
      break;
    case 
'Linux':
      if (
options.title) {
        
args.push(quote(options.title));
        
args.push(cmd.msg);
        
args.push(quote(msg));
      } else {
        
args.push(quote(msg));
      }
      break;
    case 
'Windows':
      
args.push(quote(msg));
      if (
options.title) args.push(cmd.title + quote(options.title));
      break;
  }

  
// execute
  
exec(args.join(' '), fn);
};
?>
Онлайн: 1
Реклама