-
Notifications
You must be signed in to change notification settings - Fork 39
/
index.ts
66 lines (36 loc) · 1.21 KB
/
index.ts
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
import * as capnp from 'capnp-ts';
import * as s from 'capnp-ts/lib/std/schema.capnp';
import initTrace from 'debug';
import {loadRequest, writeTsFiles} from './compiler';
const trace = initTrace('capnpc');
trace('load');
const chunks: Buffer[] = [];
export function main() {
process.stdin.on('data', (chunk: Buffer) => {
trace('reading data chunk (%d bytes)', chunk.byteLength);
chunks.push(chunk);
});
process.stdin.on('end', () => {
trace('read complete');
const reqBuffer = new Buffer(chunks.reduce((l, chunk) => l + chunk.byteLength, -1));
let i = 0;
chunks.forEach((chunk, j) => {
if (j === chunks.length - 1) {
// Exclude the EOF byte.
chunk.copy(reqBuffer, i, 0, chunk.byteLength - 1);
} else {
chunk.copy(reqBuffer, i);
}
i += chunk.byteLength;
});
trace(reqBuffer);
const message = capnp.Message.fromBuffer(reqBuffer);
trace('message: %s', message.dump());
const req = message.getRoot(s.CodeGeneratorRequest);
trace('%s', req);
const ctx = loadRequest(req);
writeTsFiles(ctx);
// NOTE: Uncomment this to enable transpilation to JS, kinda broken right now.
// transpileAll(ctx);
});
}