1 var http = require('http')
3 var constant = require('./constants')
4 var helper = require('./helper')
5 var cfg = require('./config')
7 var parseExitCode = function (buffer, defaultCode) {
8 var tailPos = buffer.length - Buffer.byteLength(constant.EXIT_CODE) - 1
14 // tail buffer which might contain the message
15 var tail = buffer.slice(tailPos)
16 var tailStr = tail.toString()
17 if (tailStr.substr(0, tailStr.length - 1) === constant.EXIT_CODE) {
19 return parseInt(tailStr.substr(-1), 10)
25 // TODO(vojta): read config file (port, host, urlRoot)
26 exports.run = function (config, done) {
27 done = helper.isFunction(done) ? done : process.exit
28 config = cfg.parseConfig(config.configFile, config)
32 hostname: config.hostname,
33 path: config.urlRoot + 'run',
37 'Content-Type': 'application/json'
41 var request = http.request(options, function (response) {
42 response.on('data', function (buffer) {
43 exitCode = parseExitCode(buffer, exitCode)
44 process.stdout.write(buffer)
47 response.on('end', function () {
52 request.on('error', function (e) {
53 if (e.code === 'ECONNREFUSED') {
54 console.error('There is no server listening on port %d', options.port)
61 request.end(JSON.stringify({
62 args: config.clientArgs,
63 removedFiles: config.removedFiles,
64 changedFiles: config.changedFiles,
65 addedFiles: config.addedFiles,
66 refresh: config.refresh