@@ -14,6 +14,15 @@ const maxTime = 5;
14
14
// The minimum sample size required to perform statistical analysis.
15
15
const minSamples = 5 ;
16
16
17
+ // Get the revisions and make things happen!
18
+ const { benchmarks, revisions } = getArguments ( process . argv . slice ( 2 ) ) ;
19
+ const benchmarkProjects = prepareBenchmarkProjects ( revisions ) ;
20
+
21
+ runBenchmarks ( benchmarks , benchmarkProjects ) . catch ( ( error ) => {
22
+ console . error ( error ) ;
23
+ process . exit ( 1 ) ;
24
+ } ) ;
25
+
17
26
function localDir ( ...paths ) {
18
27
return path . join ( __dirname , '..' , ...paths ) ;
19
28
}
@@ -230,9 +239,7 @@ function maxBy(array, fn) {
230
239
}
231
240
232
241
// Prepare all revisions and run benchmarks matching a pattern against them.
233
- async function runBenchmarks ( benchmarks , revisions ) {
234
- const benchmarkProjects = prepareBenchmarkProjects ( revisions ) ;
235
-
242
+ async function runBenchmarks ( benchmarks , benchmarkProjects ) {
236
243
for ( const benchmark of benchmarks ) {
237
244
const results = [ ] ;
238
245
for ( let i = 0 ; i < benchmarkProjects . length ; ++ i ) {
@@ -266,31 +273,34 @@ async function runBenchmarks(benchmarks, revisions) {
266
273
267
274
function getArguments ( argv ) {
268
275
const revsIdx = argv . indexOf ( '--revs' ) ;
269
- const revsArgs = revsIdx === - 1 ? [ ] : argv . slice ( revsIdx + 1 ) ;
270
- const specificBenchmarks = revsIdx === - 1 ? argv : argv . slice ( 0 , revsIdx ) ;
271
- let assumeArgs ;
272
- let revisions ;
273
- switch ( revsArgs . length ) {
276
+ const revisions = revsIdx === - 1 ? [ ] : argv . slice ( revsIdx + 1 ) ;
277
+ const benchmarks = revsIdx === - 1 ? argv : argv . slice ( 0 , revsIdx ) ;
278
+
279
+ switch ( revisions . length ) {
274
280
case 0 :
275
- assumeArgs = [ ...specificBenchmarks , '--revs' , 'local' , 'HEAD' ] ;
276
- revisions = [ LOCAL , 'HEAD' ] ;
277
- break ;
281
+ revisions . unshift ( 'HEAD' ) ;
278
282
case 1 :
279
- assumeArgs = [ ...specificBenchmarks , '--revs' , 'local' , revsArgs [ 0 ] ] ;
280
- revisions = [ LOCAL , revsArgs [ 0 ] ] ;
281
- break ;
282
- default :
283
- revisions = revsArgs ;
283
+ revisions . unshift ( 'local' ) ;
284
+
285
+ const assumeArgv = [ 'benchmark' , ...benchmarks , '--revs' , ...revisions ] ;
286
+ console . warn ( 'Assuming you meant: ' + bold ( assumeArgv . join ( ' ' ) ) ) ;
284
287
break ;
285
288
}
286
289
287
- if ( assumeArgs ) {
288
- console . warn (
289
- 'Assuming you meant: ' + bold ( 'benchmark ' + assumeArgs . join ( ' ' ) ) ,
290
- ) ;
290
+ if ( benchmarks . length === 0 ) {
291
+ benchmarks . push ( ...findAllBenchmarks ( ) ) ;
291
292
}
292
293
293
- return { specificBenchmarks, revisions } ;
294
+ return { benchmarks, revisions } ;
295
+ }
296
+
297
+ function findAllBenchmarks ( ) {
298
+ return fs
299
+ . readdirSync ( localDir ( 'benchmark' ) , { withFileTypes : true } )
300
+ . filter ( ( dirent ) => dirent . isFile ( ) )
301
+ . map ( ( dirent ) => dirent . name )
302
+ . filter ( ( name ) => name . endsWith ( '-benchmark.js' ) )
303
+ . map ( ( name ) => path . join ( 'benchmark' , name ) ) ;
294
304
}
295
305
296
306
function bold ( str ) {
@@ -317,26 +327,6 @@ function grey(str) {
317
327
return '\u001b[90m' + str + '\u001b[0m' ;
318
328
}
319
329
320
- function findAllBenchmarks ( ) {
321
- return fs
322
- . readdirSync ( localDir ( 'benchmark' ) , { withFileTypes : true } )
323
- . filter ( ( dirent ) => dirent . isFile ( ) )
324
- . map ( ( dirent ) => dirent . name )
325
- . filter ( ( name ) => name . endsWith ( '-benchmark.js' ) )
326
- . map ( ( name ) => path . join ( 'benchmark' , name ) ) ;
327
- }
328
-
329
- // Get the revisions and make things happen!
330
- if ( require . main === module ) {
331
- const { specificBenchmarks, revisions } = getArguments ( process . argv . slice ( 2 ) ) ;
332
- const benchmarks =
333
- specificBenchmarks . length > 0 ? specificBenchmarks : findAllBenchmarks ( ) ;
334
- runBenchmarks ( benchmarks , revisions ) . catch ( ( error ) => {
335
- console . error ( error ) ;
336
- process . exit ( 1 ) ;
337
- } ) ;
338
- }
339
-
340
330
function sampleModule ( modulePath ) {
341
331
const sampleCode = `
342
332
const assert = require('assert');
0 commit comments