-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerator.js
66 lines (47 loc) · 1.48 KB
/
generator.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 fs = require('fs');
var _ = require('lodash');
function start(serverFile, writersFile, queriesFile, output) {
if (!output) {
console.log('no output defined');
return;
}
var fileOpts = { encoding: 'UTF-8' };
var inputServers = JSON.parse(fs.readFileSync(serverFile, fileOpts));
var queries = JSON.parse(fs.readFileSync(queriesFile, fileOpts));
var writers = JSON.parse(fs.readFileSync(writersFile, fileOpts));
var servers = [];
_.forIn(inputServers, function(server, serverName) {
console.log('configuring server', serverName);
var sv = configureServer(server, queries, writers);
sv.alias = serverName;
servers.push(sv);
});
var content = JSON.stringify({ servers: servers });
fs.writeFileSync(output, content, fileOpts);
}
function configureServer(server, queries, writers) {
var actualQueries = [];
server.queries.forEach(function(query) {
if (!queries[query]) {
console.log('query not found:', query);
return;
}
var q = _.clone(queries[query]);
actualQueries.push(q);
q.outputWriters = [];
server.writers.forEach(function(writer) {
if (!writers[writer]) {
console.log('writer not found:', writer);
}
q.outputWriters.push(writers[writer]);
});
});
delete server.writers;
server.queries = actualQueries;
return server;
};
if (process.argv < 6) {
console.log('Usage: node generator.js [servers-file] [writers-file] [queries-file] [output]');
return;
}
start(process.argv[2], process.argv[3], process.argv[4], process.argv[5]);