-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
executable file
·52 lines (39 loc) · 2.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
var path = require('path');
var lysisUtils = require('api-lysis').utils;
var restangularServicesGenerator = function(parameters) {
var templatePath = path.join(__dirname, 'templates');
// templates
lysisUtils.registerTemplate('resource-service', path.join(templatePath, 'resource-service.ts.tpl'));
lysisUtils.registerTemplate('index', path.join(templatePath, 'index.ts.tpl'));
lysisUtils.registerTemplate('app-module-addendum', path.join(templatePath, 'app-module-addendum.tpl'));
var basePath = path.join(parameters.config.basePath, (parameters.generatorConfig.dir ? parameters.generatorConfig.dir : 'backend-services'));
parameters.context.basePath = basePath;
lysisUtils.createDir(path.join(basePath));
if (!parameters.generatorConfig.classPath) {
parameters.generatorConfig.classPath = '../backend-classes';
}
lysisUtils.copyFile(path.join(templatePath, 'backend-service.ts.tpl'), `${basePath}/backend.service.ts`);
lysisUtils.copyFile(path.join(templatePath, 'RestangularConfigFactory.ts.tpl'), `${basePath}/RestangularConfigFactory.ts`);
// create resources files from templates
for (var resourceName in parameters.context.resources) {
var resource = parameters.context.resources[resourceName];
var context = { resource: resource, classPath: parameters.generatorConfig.classPath };
var className = lysisUtils.toCamelCase(resource.name, 'upper');
// if service target files exists, do not overwrite (except when required from config)
if (!lysisUtils.exists(`${basePath}/${className}.service.ts`)) {
lysisUtils.createFile('resource-service', `${basePath}/${className}.service.ts`, context);
}
}
// create index file
lysisUtils.createFile('index', `${basePath}/index.ts`, parameters.context);
console.log(lysisUtils.evalTemplate('app-module-addendum', parameters.context));
};
// Test the generator when starting `node index.js` directly
if (require.main === module) {
lysisUtils.getGeneratorTester()
.setUrl('http://127.0.0.1:8000')
// .setUrl('https://demo.api-platform.com')
.setGenerator(restangularServicesGenerator)
.test();
}
module.exports = restangularServicesGenerator;