-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexec.js
122 lines (118 loc) · 2.5 KB
/
exec.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
module.exports = {
name: "exec",
ns: "utils",
description: "Execute a program",
phrases: {
active: "Executing {{input.in}}"
},
ports: {
input: {
"in": {
type: "string",
title: "Program String",
description: "e.g. `cat *.js bad_file | wc -l`"
},
data: {
type: "string",
title: "Data For StdIn",
description: "Optional data to be send to stdin, the process executed must be set to expect stdin",
"default": null
},
encoding: {
type: "string",
title: "Encoding",
"default": "utf-8"
},
timeout: {
type: "number",
title: "Encoding",
"default": 0
},
maxBuffer: {
type: "number",
title: "Buffer Maximum",
"default": 204800
},
killSignal: {
type: "string",
title: "Kill Signal",
"default": "SIGTERM"
},
cwd: {
type: "string",
title: "Current working dir",
"default": null
},
env: {
type: "string",
title: "Env",
"default": null
}
},
output: {
out: {
title: "Std Out",
type: "string"
},
flushed: {
title: "Flushed",
type: "boolean"
},
error: {
title: "Error",
type: "object"
}
}
},
dependencies: {
npm: {
child_process: require('child_process')
}
},
on: {},
fn: function exec(input, $, output, state, done, cb, on, child_process) {
var r = function() {
var child = child_process.exec($.in,
function(error, stdout, stderr) {
if (stderr) {
output({
error: $.create(stderr)
});
} else if (error) {
output({
error: $.create(error)
});
} else {
output({
out: $.create(stdout)
});
}
done();
}, {
encoding: $.encoding,
maxBuffer: $.maxBuffer,
killSignal: $.killSignal,
cwd: $.cwd,
env: $.env
});
child.on('error', function(err) {
output({
error: $.create(err)
});
});
if ($.data) {
child.stdin.end($.data, $.encoding, function() {
output({
flushed: $.create(true)
});
});
}
}.call(this);
return {
output: output,
state: state,
on: on,
return: r
};
}
}