Skip to content

Commit 1744010

Browse files
author
akasimov
committed
polish refactoring
1 parent 5967d64 commit 1744010

3 files changed

Lines changed: 46 additions & 23 deletions

File tree

src/commands/java/pipeline.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,19 @@ const {elapsed} = require('../../elapsed');
88

99
/**
1010
* Runs multiple Maven goals in a single Maven invocation.
11+
* @param {Object} coms - Command map to resolve goals and extra flags from
1112
* @param {Array.<String>} commands - Command names to run in order
1213
* @param {Object} opts - All options
1314
* @return {Promise} of pipeline task
1415
*/
15-
module.exports = function(commands, opts) {
16-
const coms = this;
16+
module.exports = function(coms, commands, opts) {
1717
return elapsed(async (tracked) => {
1818
const extraFlags = [];
1919
const goalList = commands.flatMap((cmd) => {
2020
const command = coms[cmd];
21-
if (command.extraFlags) extraFlags.push(...command.extraFlags(opts));
21+
if (command.extraFlags) {
22+
extraFlags.push(...command.extraFlags(opts));
23+
}
2224
return typeof command.goals === 'function' ? command.goals(opts) : command.goals || [];
2325
});
2426
const result = await mvnw(goalList.concat(flags(opts)).concat(extraFlags), opts.target, opts.batch);

src/commands/js/pipeline.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,21 @@
33
* SPDX-License-Identifier: MIT
44
*/
55

6+
const {elapsed} = require('../../elapsed');
7+
68
/**
79
* Runs multiple JS pipeline steps sequentially.
10+
* @param {Object} coms - Command map to resolve step functions from
811
* @param {Array.<String>} commands - Command names to run in order
912
* @param {Object} opts - All options
1013
* @return {Promise} of pipeline task
1114
*/
12-
module.exports = async function(commands, opts) {
13-
const coms = this;
14-
for (const cmd of commands) {
15-
await coms[cmd](opts);
16-
}
15+
module.exports = function(coms, commands, opts) {
16+
return elapsed(async (tracked) => {
17+
for (const cmd of commands) {
18+
// eslint-disable-next-line no-await-in-loop
19+
await coms[cmd](opts);
20+
}
21+
tracked.print(`Pipeline [${commands.join(' \u2192 ')}] done`);
22+
});
1723
};

src/eoc.js

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ const {program} = require('commander'),
4444
compile: require('./commands/java/compile'),
4545
dataize: require('./commands/java/dataize'),
4646
test: require('./commands/java/test'),
47-
pipeline: require('./commands/java/pipeline'),
4847
}
4948
},
5049
[language.js]: {
@@ -56,9 +55,12 @@ const {program} = require('commander'),
5655
compile: require('./commands/js/compile'),
5756
dataize: require('./commands/js/dataize'),
5857
test: require('./commands/js/test'),
59-
pipeline: require('./commands/js/pipeline'),
6058
}
6159
}
60+
},
61+
pipelines = {
62+
[language.java]: require('./commands/java/pipeline'),
63+
[language.js]: require('./commands/js/pipeline'),
6264
};
6365

6466
if (process.argv.includes('--verbose')) {
@@ -144,7 +146,7 @@ program.command('parse')
144146
pin(program.opts());
145147
clear(str);
146148
if (program.opts().alone === undefined) {
147-
await coms().pipeline(['register', 'parse'], program.opts());
149+
await pipe()(coms(), ['register', 'parse'], program.opts());
148150
} else {
149151
await coms().parse(program.opts());
150152
}
@@ -156,7 +158,7 @@ program.command('assemble')
156158
pin(program.opts());
157159
clear(str);
158160
if (program.opts().alone === undefined) {
159-
await coms().pipeline(['register', 'assemble'], program.opts());
161+
await pipe()(coms(), ['register', 'assemble'], program.opts());
160162
} else {
161163
await coms().assemble(program.opts());
162164
}
@@ -174,7 +176,7 @@ program.command('sodg')
174176
pin(program.opts());
175177
clear(str);
176178
if (program.opts().alone === undefined) {
177-
await coms().pipeline(['register', 'assemble'], program.opts());
179+
await pipe()(coms(), ['register', 'assemble'], program.opts());
178180
await coms().sodg({...program.opts(), ...str});
179181
} else {
180182
await coms().sodg({...program.opts(), ...str});
@@ -190,7 +192,7 @@ program.command('print')
190192
)
191193
.option(
192194
'--print-output <dir>',
193-
'Directory where translated EO files are stored (relative to --target)',
195+
'Directory where translated EO files are pipelinesd (relative to --target)',
194196
'print'
195197
)
196198
.action((str, opts) => {
@@ -205,7 +207,7 @@ program.command('lint')
205207
pin(program.opts());
206208
clear(str);
207209
if (program.opts().alone === undefined) {
208-
await coms().pipeline(['register', 'assemble', 'lint'], program.opts());
210+
await pipe()(coms(), ['register', 'assemble', 'lint'], program.opts());
209211
} else {
210212
await coms().lint(program.opts());
211213
}
@@ -217,7 +219,7 @@ program.command('resolve')
217219
pin(program.opts());
218220
clear(str);
219221
if (program.opts().alone === undefined) {
220-
await coms().pipeline(['register', 'assemble', 'lint', 'resolve'], program.opts());
222+
await pipe()(coms(), ['register', 'assemble', 'lint', 'resolve'], program.opts());
221223
} else {
222224
await coms().resolve(program.opts());
223225
}
@@ -229,7 +231,7 @@ program.command('transpile')
229231
pin(program.opts());
230232
clear(str);
231233
if (program.opts().alone === undefined) {
232-
await coms().pipeline(['register', 'assemble', 'lint', 'resolve', 'transpile'], program.opts());
234+
await pipe()(coms(), ['register', 'assemble', 'lint', 'resolve', 'transpile'], program.opts());
233235
} else {
234236
await coms().transpile(program.opts());
235237
}
@@ -241,7 +243,7 @@ program.command('compile')
241243
pin(program.opts());
242244
clear(str);
243245
if (program.opts().alone === undefined) {
244-
await coms().pipeline(['register', 'assemble', 'lint', 'resolve', 'transpile', 'compile'], program.opts());
246+
await pipe()(coms(), ['register', 'assemble', 'lint', 'resolve', 'transpile', 'compile'], program.opts());
245247
} else {
246248
await coms().compile(program.opts());
247249
}
@@ -252,7 +254,7 @@ program.command('link')
252254
.action(async (str, opts) => {
253255
clear(str);
254256
if (program.opts().alone === undefined) {
255-
await coms().pipeline(['register', 'assemble', 'lint', 'resolve', 'transpile', 'compile', 'link'], program.opts());
257+
await pipe()(coms(), ['register', 'assemble', 'lint', 'resolve', 'transpile', 'compile', 'link'], program.opts());
256258
} else {
257259
await coms().link(program.opts());
258260
}
@@ -266,7 +268,7 @@ program.command('dataize')
266268
pin(program.opts());
267269
clear(str);
268270
if (program.opts().alone === undefined) {
269-
await coms().pipeline(['register', 'assemble', 'lint', 'resolve', 'transpile', 'compile', 'link'], program.opts());
271+
await pipe()(coms(), ['register', 'assemble', 'lint', 'resolve', 'transpile', 'compile', 'link'], program.opts());
270272
await coms().dataize(
271273
program.args[1], program.args.slice(2), {...program.opts(), ...str}
272274
);
@@ -285,7 +287,7 @@ program.command('test')
285287
pin(program.opts());
286288
clear(str);
287289
if (program.opts().alone === undefined) {
288-
await coms().pipeline(['register', 'assemble', 'lint', 'resolve', 'transpile', 'compile', 'link'], program.opts());
290+
await pipe()(coms(), ['register', 'assemble', 'lint', 'resolve', 'transpile', 'compile', 'link'], program.opts());
289291
await coms().test({...program.opts(), ...str});
290292
} else {
291293
await coms().test({...program.opts(), ...str});
@@ -364,7 +366,7 @@ program.command('latex')
364366
.action(async (str, opts) => {
365367
pin(program.opts());
366368
clear(str);
367-
await coms().pipeline(['register', 'parse'], program.opts());
369+
await pipe()(coms(), ['register', 'parse'], program.opts());
368370
await coms().latex(program.opts());
369371
});
370372

@@ -373,7 +375,7 @@ program.command('fmt')
373375
.action(async (str, opts) => {
374376
pin(program.opts());
375377
clear(str);
376-
await coms().pipeline(['register', 'parse'], program.opts());
378+
await pipe()(coms(), ['register', 'parse'], program.opts());
377379
await coms().print({
378380
printInput: '1-parse',
379381
printOutput: program.opts().sources,
@@ -422,3 +424,16 @@ function coms() {
422424
}
423425
return hash;
424426
}
427+
428+
/**
429+
* Get pipeline for the target language.
430+
* @return {Function} - pipeline function
431+
*/
432+
function pipe() {
433+
const lang = program.opts().language,
434+
pipeline = pipelines[lang];
435+
if (pipeline === undefined) {
436+
throw new Error(`Unknown platform ${lang}`);
437+
}
438+
return pipeline;
439+
}

0 commit comments

Comments
 (0)