-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
56 lines (40 loc) · 1.18 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
/*
entry point to create services and batch services
yield services.name[version].apiname({})
yield batch.name[version]({});
*/
var path = require('path');
var parallel = require('co-parallel');
var copy = require('useful-copy');
var iter = require('super-iter');
var map = iter.map;
var reduce = iter.reduce;
var createServices = require('./lib/createServices');
var createBatches = require('./lib/createBatches');
var serviceTypes = require('require-all')(path.join(__dirname, '/lib/services/'));
/*
load a service factory in the co-parallel style
*/
function * loadService (host) {
return yield serviceTypes[host.format](host);
}
/*
map the response from co-parallels array to an object
*/
function formatServices (services) {
return reduce(services, function (acc, service) {
return copy(acc, service);
}, {});
}
/*
initialise a set of services and batches
*/
module.exports = function * index (hostsConfig, batchConfig) {
var reqs = map(hostsConfig, loadService);
var services = yield parallel(reqs, reqs.length);
services = createServices(formatServices(services));
return {
services: services,
batch: createBatches(batchConfig, services)
};
}