UNPKG

2.77 kBJavaScriptView Raw
1const each = require('lodash/each');
2
3const rawInstsToExecutable = (rawInsts) => {
4 const files = {};
5 const dependencies = {};
6 const commands = [];
7 const directories = {};
8
9 each(rawInsts, ({ name, params }) => {
10 switch (name) {
11 // File instructions
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 // Dependency instructions
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 // Command instructions
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 // Handle git keep directories
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
94module.exports = rawInstsToExecutable;