-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
66 lines (65 loc) · 1.68 KB
/
index.js
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
var exec = require('child_process').exec
var inspect = require('eyespect').inspector();
var fs = require('fs')
var rk = require('required-keys');
module.exports = function performSpawn(data, cb) {
var keys = ['host', 'port', 'secret', 'command', 'repoDir']
var err = rk.truthySync(data, keys)
if (err) {
return cb({
message: 'performSpawn failed, missing key in data',
error: err,
stack: new Error().stack
})
}
var repoDir = data.repoDir
var command = data.command
var drone = data.drone
var instances = data.instances
var host = data.host
var port = data.port
var secret = data.secret
var hub = [host, port].join(':')
fs.exists(repoDir, function (exists) {
if (!exists) {
return cb({
message: 'perform spawn failed, repo missing',
error: 'repo not found on disk at path: ' + repoDir,
command: command,
stack: new Error().stack
})
}
process.chdir(repoDir)
var cmd = 'fleet-spawn'
var args = [
'--hub=' + hub,
'--secret', secret,
'-- ', command
]
cmd = 'fleet-spawn --hub=' + hub + ' --secret=' + secret
if (data.drone) {
var droneArg = ' --drone=' + data.drone
cmd += droneArg
}
cmd += ' -- ' + command
exec(cmd, function (err, stdout, stderr) {
if (err) {
return cb({
message: 'perform spawn failed',
command: cmd,
error: err,
stack: new Error().stack
})
}
if (stderr) {
return cb({
message: 'perform spawn failed',
command: cmd,
error: stderr,
stack: new Error().stack
})
}
cb(null, stdout)
})
})
}