Вход Регистрация
Файл: 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 
0len paths.lengthlen; ++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(msgoptionsfn) {
  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 
flagext 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('--' flagquote(image))
        break;
      case 
'Linux':
        
args.push(cmd.iconquote(image));
        
// libnotify defaults to sticky, set a hint for transient notifications
        
if (!options.stickyargs.push('--hint=int:transient:1');
        break;
      case 
'Windows':
        
args.push(cmd.icon quote(image));
        break;
    }
  }

  
// sticky
  
if (options.stickyargs.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.priorityoptions.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.titleargs.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.titleargs.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.titleargs.push(cmd.title quote(options.title));
      break;
  }

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