1 | #!/usr/bin/env node
|
2 |
|
3 | var JSONSerializer = require('./JSONSerializer');
|
4 | var HappyFakeCompiler = require('./HappyFakeCompiler');
|
5 | var HappyWorker = require('./HappyWorker');
|
6 |
|
7 | if (process.argv[1] === __filename) {
|
8 | startAsWorker();
|
9 | }
|
10 |
|
11 | function startAsWorker() {
|
12 | HappyWorkerChannel(String(process.argv[2]), process);
|
13 | }
|
14 |
|
15 | function HappyWorkerChannel(id, stream) {
|
16 | var fakeCompiler = new HappyFakeCompiler(id, stream.send.bind(stream));
|
17 | var worker = new HappyWorker({ compiler: fakeCompiler });
|
18 |
|
19 | stream.on('message', accept);
|
20 | stream.send({ name: 'READY' });
|
21 |
|
22 | function accept(message) {
|
23 | if (message.name === 'COMPILE') {
|
24 | worker.compile(message.data, function(result) {
|
25 | stream.send({
|
26 | name: 'COMPILED',
|
27 | sourcePath: result.sourcePath,
|
28 | compiledPath: result.compiledPath,
|
29 | success: result.success
|
30 | });
|
31 | });
|
32 | }
|
33 | else if (message.name === 'COMPILER_RESPONSE') {
|
34 | fakeCompiler._handleResponse(message.data);
|
35 | }
|
36 | else if (message.name === 'CONFIGURE') {
|
37 | fakeCompiler.configure(JSONSerializer.deserialize(message.data.compilerOptions));
|
38 |
|
39 | stream.send({
|
40 | name: 'CONFIGURE_DONE'
|
41 | });
|
42 | }
|
43 | else {
|
44 | console.warn('ignoring unknown message:', message);
|
45 | }
|
46 | }
|
47 | }
|
48 |
|
49 | module.exports = HappyWorkerChannel; |
\ | No newline at end of file |