UNPKG

1.95 kBJavaScriptView Raw
1const co = require('bluebird').coroutine;
2const fs = require('mz/fs');
3const path = require('path');
4const _ = require('lodash');
5const confProcessor = require('./utils/config.processor.js');
6const fsUtils = require('./utils/file.utils.js');
7
8const CONFIG = 'config.json';
9
10const baseResourceConfig = {
11 signing_alg: 'RS256'
12};
13
14const create = (client, dir, config) => {
15 return co(function* () {
16
17 const resources = yield fsUtils.getDirectories(dir);
18
19 for (let i in resources) {
20 const resourceData = yield getResourceData(resources[i], config);
21
22 yield createResource(client, resourceData);
23 }
24 })();
25};
26
27const getResourceData = (dir, config) => {
28 return co(function* () {
29 const files = yield fs.readdir(dir);
30
31 const configFile = files.find(f => f === CONFIG);
32
33 const configData = (configFile) ? yield fsUtils.getFileContent(path.join(dir, configFile)) : '{}';
34
35 return {
36 name: path.basename(dir),
37 config: confProcessor.process(confProcessor.matcher.basic, configData, config)
38 };
39
40 })();
41};
42
43const createResource = (client, resourceInfo) => {
44 return co(function* () {
45
46 const resources = yield client.resourceServers.getAll();
47
48 const existingResource = resources.find(res => {
49 return res.name === resourceInfo.name;
50 });
51
52 if (existingResource) {
53 console.log(`Updating resource: ${resourceInfo.name}`);
54 const delta = _.merge({}, baseResourceConfig, resourceInfo.config);
55
56 delete delta.identifier;
57 yield client.resourceServers.update({id: existingResource.id}, delta);
58
59 console.log('Updated resource');
60
61 } else {
62 console.log(`Creating resource: ${resourceInfo.name}`);
63 const resource = _.merge({}, baseResourceConfig, resourceInfo.config);
64 resource.name = resourceInfo.name;
65
66 yield client.resourceServers.create(resource);
67
68 console.log('Created resource');
69 }
70
71 })();
72};
73
74module.exports = {
75 create
76};