Skip to content

Commit

Permalink
Merge branch 'whitespace-cleanup' into templating-hooks-and-launchers
Browse files Browse the repository at this point in the history
Conflicts:
	lib/launcher.js
  • Loading branch information
dbrans committed Nov 30, 2012
2 parents a5cc67c + 7306151 commit eca4df6
Showing 1 changed file with 92 additions and 92 deletions.
184 changes: 92 additions & 92 deletions lib/launcher.js
Expand Up @@ -9,113 +9,113 @@ var ProcessRunner = require('./runners').ProcessRunner
var template = require('./strutils').template

function Launcher(name, settings, app){
this.name = name
this.app = app
this.settings = settings
this.setupDefaultSettings()
this.name = name
this.app = app
this.settings = settings
this.setupDefaultSettings()
}

Launcher.prototype = {
__proto__: EventEmitter.prototype
, setupDefaultSettings: function(){
var settings = this.settings
if (settings.protocol === 'tap' && !('hide_stdout' in settings)){
settings.hide_stdout = true
}
}
, isProcess: function(){
return this.settings.protocol !== 'browser'
}
, start: function(){
if (this.isProcess()){
var self = this
var app = this.app
self.runner = new ProcessRunner({
__proto__: EventEmitter.prototype
, setupDefaultSettings: function(){
var settings = this.settings
if (settings.protocol === 'tap' && !('hide_stdout' in settings)){
settings.hide_stdout = true
}
}
, isProcess: function(){
return this.settings.protocol !== 'browser'
}
, start: function(){
if (this.isProcess()){
var self = this
var app = this.app
self.runner = new ProcessRunner({
app: app
, launcher: self
})
app.runners.push(self.runner)
}else{
this.launch()
}
}
, launch: function(cb){
var self = this
var app = this.app
var url = app.url
var settings = this.settings
this.kill('SIGTERM', function(){
if (settings.setup){
settings.setup(app, function(){
self.doLaunch(cb)
})
}else{
self.doLaunch(cb)
}
})
}
, doLaunch: function(cb){
var app = this.app
var url = app.url
var settings = this.settings
var self = this
var options = {}
if (settings.cwd) options.cwd = settings.cwd
if (settings.exe){
app.runners.push(self.runner)
}else{
this.launch()
}
}
, launch: function(cb){
var self = this
var app = this.app
var url = app.url
var settings = this.settings
this.kill('SIGTERM', function(){
if (settings.setup){
settings.setup(app, function(){
self.doLaunch(cb)
})
}else{
self.doLaunch(cb)
}
})

}
, doLaunch: function(cb){
var app = this.app
var url = app.url
var settings = this.settings
var self = this
var options = {}
if (settings.cwd) options.cwd = settings.cwd
if (settings.exe){

function spawn(exe){
function spawn(exe){
args = args.map(app.template.bind(app))
self.process = child_process.spawn(exe, args, options)
self.process.once('exit', self.onExit.bind(self))
self.emit('processStarted', self.process)
if (cb) cb(self.process)
}
self.process = child_process.spawn(exe, args, options)
self.process.once('exit', self.onExit.bind(self))
self.emit('processStarted', self.process)
if (cb) cb(self.process)
}

var args = [url]
if (settings.args instanceof Array)
args = settings.args.concat(args)
else if (settings.args instanceof Function)
args = settings.args(app)
var args = [url]
if (settings.args instanceof Array)
args = settings.args.concat(args)
else if (settings.args instanceof Function)
args = settings.args(app)

if (Array.isArray(settings.exe)){
if (Array.isArray(settings.exe)){
async.filter(settings.exe, fileExists, function(found){
spawn(found[0])
})
}else{
spawn(settings.exe)
}
}else if (settings.command){
var cmd = app.template(settings.command)
this.process = child_process.exec(cmd, options)
this.process.on('exit', self.onExit.bind(self))
self.emit('processStarted', self.process)
if (cb) cb(self.process)
}
}
, onExit: function(code){
this.exitCode = code
this.emit('processExit', code)
this.process = null
}
, kill: function(sig, cb){
if (!this.process){
if(cb) cb(this.exitCode)
return
}
var process = this.process
process.stdout.removeAllListeners()
process.stderr.removeAllListeners()
sig = sig || 'SIGKILL'
process.once('exit', function(){
process.removeAllListeners()
if (cb) cb()
})
process.kill(sig)
}

}else if (settings.command){
var cmd = app.template(settings.command)
this.process = child_process.exec(cmd, options)
this.process.on('exit', self.onExit.bind(self))
self.emit('processStarted', self.process)
if (cb) cb(self.process)
}
}
, onExit: function(code){
this.exitCode = code
this.emit('processExit', code)
this.process = null
}
, kill: function(sig, cb){
if (!this.process){
if(cb) cb(this.exitCode)
return
}
var process = this.process
process.stdout.removeAllListeners()
process.stderr.removeAllListeners()
sig = sig || 'SIGKILL'

process.once('exit', function(){
process.removeAllListeners()
if (cb) cb()
})

process.kill(sig)
}
}

module.exports = Launcher
module.exports = Launcher

0 comments on commit eca4df6

Please sign in to comment.