-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcommand_queue.js
More file actions
32 lines (29 loc) · 828 Bytes
/
command_queue.js
File metadata and controls
32 lines (29 loc) · 828 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// This class provides a mechanism to synchronously execute shell commands via a queue.
"use strict";
var sys = require('sys');
var exec = require('child_process').exec;
var util = require('util');
var self = this;
exports.init = function() {
self.queue = [];
return self;
}
exports.enqueue = function(command) {
self.queue.push(command);
if (self.queue.length == 1) {
exports.dequeue();
}
}
exports.dequeue = function() {
if (self.queue.length) {
console.log('[exec] ' + self.queue[0]);
var cp = exec(self.queue[0], function(error, stdout, stderr) {
self.queue.shift();
sys.print('[out] ' + stdout);
if (error !== null) {
console.log('exec error: ' + error);
}
exports.dequeue();
});
}
}