1 | const each = require('lodash/each');
|
2 |
|
3 | const rawInstsToExecutable = (rawInsts) => {
|
4 | const files = {};
|
5 | const dependencies = {};
|
6 | const commands = [];
|
7 | const directories = {};
|
8 |
|
9 | each(rawInsts, ({ name, params }) => {
|
10 | switch (name) {
|
11 |
|
12 | case 'createFile': {
|
13 | if (!files[params.at]) files[params.at] = [];
|
14 | if (!params.content && !params.from) {
|
15 | params.from = params.at;
|
16 | }
|
17 | files[params.at].push({ name: 'createFile', params });
|
18 | break;
|
19 | }
|
20 | case 'deleteFile': {
|
21 | if (!files[params.at]) files[params.at] = [];
|
22 | files[params.at].push({ name: 'deleteFile', params });
|
23 | break;
|
24 | }
|
25 | case 'appendFile': {
|
26 | if (!files[params.at]) files[params.at] = [];
|
27 | if (!params.content && !params.from) {
|
28 | params.from = params.at;
|
29 | }
|
30 | files[params.at].push({ name: 'appendFile', params });
|
31 | break;
|
32 | }
|
33 | case 'detachFromFile': {
|
34 | if (!files[params.at]) files[params.at] = [];
|
35 | if (!params.content && !params.from) {
|
36 | params.from = params.at;
|
37 | }
|
38 | files[params.at].push({ name: 'detachFromFile', params });
|
39 | break;
|
40 | }
|
41 | case 'updateFile': {
|
42 | if (!files[params.at]) files[params.at] = [];
|
43 | files[params.at].push({ name: 'updateFile', params });
|
44 | break;
|
45 | }
|
46 | case 'rollbackFile': {
|
47 | if (!files[params.at]) files[params.at] = [];
|
48 | files[params.at].push({ name: 'rollbackFile', params });
|
49 | break;
|
50 | }
|
51 | case 'updateJSONFile': {
|
52 | if (!files[params.at]) files[params.at] = [];
|
53 | files[params.at].push({ name: 'updateJSONFile', params });
|
54 | break;
|
55 | }
|
56 | case 'rollbackJSONFile': {
|
57 | if (!files[params.at]) files[params.at] = [];
|
58 | files[params.at].push({ name: 'rollbackJSONFile', params });
|
59 | break;
|
60 | }
|
61 |
|
62 | case 'installDependency': {
|
63 | dependencies[params.package] = { name: 'installDependency', params };
|
64 | break;
|
65 | }
|
66 | case 'removeDependency': {
|
67 | dependencies[params.package] = { name: 'removeDependency', params };
|
68 | break;
|
69 | }
|
70 |
|
71 | case 'runShellCommand': {
|
72 | commands.push({ name: 'runShellCommand', params });
|
73 | break;
|
74 | }
|
75 | case 'undoShellCommand': {
|
76 | commands.push({ name: 'undoShellCommand', params });
|
77 | break;
|
78 | }
|
79 |
|
80 | case 'keepDirectoryInGit': {
|
81 | directories[params.at] = { name: 'keepDirectoryInGit', params };
|
82 | break;
|
83 | }
|
84 | }
|
85 | });
|
86 | return {
|
87 | files,
|
88 | dependencies,
|
89 | commands,
|
90 | directories
|
91 | };
|
92 | };
|
93 |
|
94 | module.exports = rawInstsToExecutable;
|