mirror of
https://github.com/atom/atom.git
synced 2026-02-11 07:05:11 -05:00
Right now it calls out to grep and parses the output, but doesn't do anything with it just yet.
35 lines
1022 B
CoffeeScript
35 lines
1022 B
CoffeeScript
# node.js child-process
|
|
# http://nodejs.org/docs/v0.6.3/api/child_processes.html
|
|
|
|
$ = require 'jquery'
|
|
_ = require 'underscore'
|
|
|
|
module.exports =
|
|
class ChildProccess
|
|
@exec: (command, options={}) ->
|
|
deferred = $.Deferred()
|
|
|
|
if options.bufferLines
|
|
options.stdout = @bufferLines(options.stdout) if options.stdout
|
|
options.stderr = @bufferLines(options.stderr) if options.stderr
|
|
|
|
$native.exec command, options, (exitStatus, stdout, stderr) ->
|
|
console.log exitStatus
|
|
if exitStatus != 0
|
|
error = new Error("Exec failed (#{exitStatus}) command '#{command}'")
|
|
error.exitStatus = exitStatus
|
|
deferred.reject(error)
|
|
else
|
|
deferred.resolve(stdout, stderr)
|
|
|
|
deferred
|
|
|
|
@bufferLines: (callback) ->
|
|
buffered = ""
|
|
(data) ->
|
|
buffered += data
|
|
lastNewlineIndex = buffered.lastIndexOf('\n')
|
|
if lastNewlineIndex >= 0
|
|
callback(buffered.substring(0, lastNewlineIndex + 1))
|
|
buffered = buffered.substring(lastNewlineIndex + 1)
|