1 | const assign = require('lodash/assign');
|
2 | const eachAsync = require('series-async-each');
|
3 | const sortBy = require('lodash/sortBy');
|
4 | const keys = require('lodash/keys');
|
5 | const instRegistry = require('./instRegistry');
|
6 | const rawInstsToExecutable = require('./rawInstsToExecutable');
|
7 | const { getExecutorOptions } = require('./executorOptions');
|
8 | const outputMessage = require('./executions/outputMessage');
|
9 | const executions = require('./executions');
|
10 |
|
11 | const executeAllInstructions = async () => {
|
12 | const executable = rawInstsToExecutable(instRegistry.getAll());
|
13 | const { files, dependencies, commands, directories } = executable;
|
14 | await eachAsync(sortBy(keys(files)), async (filename) => {
|
15 | await eachAsync(files[filename], async ({ name, params }) => {
|
16 | const executionParams = assign(getExecutorOptions(), params);
|
17 | const message = await executions[name](executionParams);
|
18 | outputMessage(...message);
|
19 | });
|
20 | });
|
21 | await eachAsync(sortBy(keys(directories)), async (directory) => {
|
22 | const { name, params } = directories[directory];
|
23 | await executions[name](assign(getExecutorOptions(), params));
|
24 | });
|
25 | await eachAsync(sortBy(keys(dependencies)), async (dependency) => {
|
26 | const { name, params } = dependencies[dependency];
|
27 | await executions[name](assign(getExecutorOptions(), params));
|
28 | });
|
29 | await eachAsync(commands, async ({ name, params }) => {
|
30 | await executions[name](assign(getExecutorOptions(), params));
|
31 | });
|
32 | };
|
33 |
|
34 | module.exports = executeAllInstructions;
|