/
generate.js
44 lines (35 loc) · 1.13 KB
/
generate.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
import _ from 'lodash';
import TaskGenerator from './entities/TaskGenerator';
import WorkflowGenerator from './entities/WorkflowGenerator';
import ImportGenerator from './entities/ImportGenerator';
export default function generate(objectModel) {
const settings = {};
let imports = '';
_.forEach(objectModel.imports, (imp, i) => {
const importGen = new ImportGenerator(imp, settings);
imports += importGen.renderImport();
if (i === objectModel.imports.length - 1) {
imports += importGen.renderEOL();
}
});
const wf = new WorkflowGenerator(objectModel, settings).renderWorkflow();
let tasks = '';
const actionsToBeRendered = {};
const actionSelector = (children) => {
_.forEach(children, (val) => {
if (!val.imported) {
if (!val.type) {
const action = val.action;
actionsToBeRendered[action.name] = action;
} else {
actionSelector(val.children);
}
}
});
};
actionSelector(objectModel.children);
_.forEach(actionsToBeRendered, (action) => {
tasks += new TaskGenerator(action).renderTask();
});
return imports + wf + tasks;
}