Skip to content

Commit 120c5d7

Browse files
committed
Upgraded backend to handle extra.command_id. The server now passes the command tracer the client needs to place process output in its respective container
1 parent 91880e5 commit 120c5d7

File tree

10 files changed

+57
-25
lines changed

10 files changed

+57
-25
lines changed

plugins-server/cloud9.ide.git/git.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ util.inherits(GitPlugin, Plugin);
7474
command: "git",
7575
args: message.argv.slice(1),
7676
cwd: message.cwd,
77-
env: this.gitEnv
77+
env: this.gitEnv,
78+
extra: message.extra
7879
}, this.channel, function(err, pid) {
7980
if (err)
8081
self.error(err, 1, message, client);

plugins-server/cloud9.ide.hg/hg.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ util.inherits(HgPlugin, Plugin);
7070
this.pm.spawn("shell", {
7171
command: "hg",
7272
args: message.argv.slice(1),
73-
cwd: message.cwd
73+
cwd: message.cwd,
74+
extra: message.extra
7475
}, this.channel, function(err, pid) {
7576
if (err)
7677
self.error(err, 1, message, client);

plugins-server/cloud9.ide.npm/npm.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ util.inherits(NpmPlugin, Plugin);
5353
this.pm.spawn("npm", {
5454
args: message.argv.slice(1),
5555
cwd: message.cwd,
56-
nodeVersion: message.version
56+
nodeVersion: message.version,
57+
extra: message.extra
5758
}, this.workspaceId + "::npm", function(err, pid) {
5859
if (err)
5960
self.error(err, 1, message, client);

plugins-server/cloud9.ide.run-node/run-node.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ util.inherits(NodeRuntimePlugin, Plugin);
9696
file: file,
9797
args: args,
9898
env: env,
99-
nodeVersion: version
99+
nodeVersion: version,
100+
extra: message.extra
100101
}, self.channel, function(err, pid) {
101102
if (err)
102103
self.error(err, 1, message, client);
@@ -118,7 +119,8 @@ util.inherits(NodeRuntimePlugin, Plugin);
118119
args: args,
119120
env: env,
120121
breakOnStart: breakOnStart,
121-
nodeVersion: version
122+
nodeVersion: version,
123+
extra: message.extra
122124
}, self.channel, function(err, pid) {
123125
if (err)
124126
self.error(err, 1, message, client);

plugins-server/cloud9.ide.shell/shell.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,14 +149,16 @@ util.inherits(ShellPlugin, Plugin);
149149
this.pm.exec("shell", {
150150
command: message.command,
151151
args: message.argv.slice(1),
152-
cwd: message.cwd || this.workspaceDir
152+
cwd: message.cwd || this.workspaceDir,
153+
extra: message.extra
153154
}, function(code, out, err) {
154155
self.processCount -= 1;
155156
self.sendResult(0, message.command, {
156157
code : code,
157158
argv : message.argv,
158159
err : err,
159-
out : out
160+
out : out,
161+
extra : message.extra
160162
});
161163
});
162164
};
@@ -180,10 +182,26 @@ util.inherits(ShellPlugin, Plugin);
180182
if (!stat.isDirectory())
181183
return self.sendResult(0, "error", "Not a directory.");
182184

183-
self.sendResult(0, message.command, {cwd: path});
185+
self.sendResult(0, message.command, {
186+
cwd: path,
187+
extra: message.extra
188+
});
184189
});
185190
};
186191

192+
this["command-kill"] = function(message) {
193+
var procExists = this.pm.kill(message.pid);
194+
195+
if (!procExists) {
196+
this.sendResult(0, message.command, {
197+
argv : message.argv,
198+
code : -1,
199+
err : "Process does not exist or already exiting",
200+
extra : message.extra
201+
});
202+
}
203+
};
204+
187205
this.getListing = function(tail, path, dirmode, callback) {
188206
var matches = [];
189207
tail = (tail || "")

plugins-server/cloud9.process-manager/process_manager.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,10 @@ var ProcessManager = module.exports = function(runners, eventEmitter) {
143143
this.kill = function(pid) {
144144
var child = this.processes[pid];
145145
if (!child || !child.pid)
146-
return;
146+
return false;
147147

148148
child.kill();
149+
return true;
149150
};
150151

151152
}).call(ProcessManager.prototype);

plugins-server/cloud9.run.node-debug/node_debug.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,14 @@ var exports = module.exports = function setup(options, imports, register) {
2727
exports.factory = function(uid, ide) {
2828
return function(args, eventEmitter, eventName) {
2929
var cwd = args.cwd || ide.workspaceDir;
30-
return new Runner(uid, args.file, args.args, cwd, args.env, args.breakOnStart, eventEmitter, eventName);
30+
return new Runner(uid, args.file, args.args, cwd, args.env, args.breakOnStart, args.extra, eventEmitter, eventName);
3131
};
3232
};
3333

34-
var Runner = exports.Runner = function(uid, file, args, cwd, env, breakOnStart, eventEmitter, eventName) {
35-
NodeRunner.call(this, uid, file, args, cwd, env, eventEmitter, eventName);
34+
var Runner = exports.Runner = function(uid, file, args, cwd, env, breakOnStart, extra, eventEmitter, eventName) {
35+
NodeRunner.call(this, uid, file, args, cwd, env, extra, eventEmitter, eventName);
3636
this.breakOnStart = breakOnStart;
37+
this.extra = extra;
3738
this.msgQueue = [];
3839
};
3940

@@ -105,14 +106,16 @@ function mixin(Class, Parent) {
105106
send({
106107
"type": "node-debug",
107108
"pid": self.pid,
108-
"body": body
109+
"body": body,
110+
"extra": self.extra
109111
});
110112
});
111113

112114
this.nodeDebugProxy.on("connection", function() {
113115
send({
114116
"type": "node-debug-ready",
115-
"pid": self.pid
117+
"pid": self.pid,
118+
"extra": self.extra
116119
});
117120
self._flushSendQueue();
118121
});

plugins-server/cloud9.run.node/node.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,20 @@ exports.factory = function(uid, ide) {
2626
return function(args, eventEmitter, eventName) {
2727
var cwd = args.cwd || ide.workspaceDir;
2828

29-
return new Runner(uid, args.file, args.args, cwd, args.env, eventEmitter, eventName);
29+
return new Runner(uid, args.file, args.args, cwd, args.env, args.extra, eventEmitter, eventName);
3030
};
3131
};
3232

33-
var Runner = exports.Runner = function(uid, file, args, cwd, env, eventEmitter, eventName) {
33+
var Runner = exports.Runner = function(uid, file, args, cwd, env, extra, eventEmitter, eventName) {
3434
this.uid = uid;
3535
this.file = file;
36+
this.extra = extra;
3637

3738
this.scriptArgs = args || [];
3839
this.nodeArgs = [];
3940

4041
env = env || {};
41-
ShellRunner.call(this, uid, process.execPath, [], cwd, env, eventEmitter, eventName);
42+
ShellRunner.call(this, uid, process.execPath, [], cwd, env, extra, eventEmitter, eventName);
4243
};
4344

4445
util.inherits(Runner, ShellRunner);

plugins-server/cloud9.run.npm/npm.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ var exports = module.exports = function setup(options, imports, register) {
2323

2424
exports.factory = function(root, port, uid) {
2525
return function(args, eventEmitter, eventName) {
26-
return new Runner(uid, args.args, args.cwd, args.nodeVersion, eventEmitter, eventName);
26+
return new Runner(uid, args.args, args.cwd, args.nodeVersion, args.extra, eventEmitter, eventName);
2727
};
2828
};
2929

30-
var Runner = exports.Runner = function(uid, args, cwd, nodeVersion, eventEmitter, eventName) {
31-
ShellRunner.call(this, uid, "npm", args, cwd, {}, eventEmitter, eventName);
30+
var Runner = exports.Runner = function(uid, args, cwd, nodeVersion, extra, eventEmitter, eventName) {
31+
ShellRunner.call(this, uid, "npm", args, cwd, {}, extra, eventEmitter, eventName);
3232
};
3333

3434
util.inherits(Runner, ShellRunner);

plugins-server/cloud9.run.shell/shell.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,15 @@ var exports = module.exports = function setup(options, imports, register) {
2323

2424
exports.factory = function(uid) {
2525
return function(args, eventEmitter, eventName) {
26-
return new Runner(uid, args.command, args.args, args.cwd, args.env, eventEmitter, eventName);
26+
return new Runner(uid, args.command, args.args, args.cwd, args.env, args.extra, eventEmitter, eventName);
2727
};
2828
};
2929

30-
var Runner = exports.Runner = function(uid, command, args, cwd, env, eventEmitter, eventName) {
30+
var Runner = exports.Runner = function(uid, command, args, cwd, env, extra, eventEmitter, eventName) {
3131
this.uid = uid;
3232
this.command = command;
3333
this.args = args || [];
34+
this.extra = extra;
3435

3536
this.runOptions = {};
3637
if (cwd)
@@ -133,7 +134,8 @@ var Runner = exports.Runner = function(uid, command, args, cwd, env, eventEmitte
133134
"type": self.name + "-data",
134135
"pid": pid,
135136
"stream": stream,
136-
"data": data.toString("utf8")
137+
"data": data.toString("utf8"),
138+
"extra": self.extra
137139
});
138140
};
139141
}
@@ -142,14 +144,16 @@ var Runner = exports.Runner = function(uid, command, args, cwd, env, eventEmitte
142144
emit({
143145
"type": self.name + "-exit",
144146
"pid": pid,
145-
"code": code
147+
"code": code,
148+
"extra": self.extra
146149
});
147150
});
148151

149152
process.nextTick(function() {
150153
emit({
151154
"type": self.name + "-start",
152-
"pid": pid
155+
"pid": pid,
156+
"extra": self.extra
153157
});
154158
});
155159
};

0 commit comments

Comments
 (0)