1
- #!/usr/bin/env node
2
1
'use strict'
3
2
4
3
const inquirer = require ( 'inquirer' )
5
4
const bench = require ( './lib/bench' )
6
5
const { choices, list } = require ( './lib/packages' )
6
+ const argv = process . argv . slice ( 2 )
7
7
8
- function select ( callback ) {
9
- inquirer . prompt ( [
8
+ run ( ) . catch ( err => {
9
+ console . error ( err )
10
+ process . exit ( 1 )
11
+ } )
12
+
13
+ async function run ( ) {
14
+ const options = await getBenchmarkOptions ( )
15
+ const modules = options . all ? choices : await select ( list )
16
+ return bench ( options , modules )
17
+ }
18
+
19
+ async function getBenchmarkOptions ( ) {
20
+ if ( argv . length ) return parseArgv ( )
21
+ return inquirer . prompt ( [
22
+ {
23
+ type : 'confirm' ,
24
+ name : 'all' ,
25
+ message : 'Do you want to run all benchmark tests?' ,
26
+ default : false
27
+ } ,
28
+ {
29
+ type : 'input' ,
30
+ name : 'connections' ,
31
+ message : 'How many connections do you need?' ,
32
+ default : 100 ,
33
+ validate ( value ) {
34
+ return ! Number . isNaN ( parseFloat ( value ) ) || 'Please enter a number'
35
+ } ,
36
+ filter : Number
37
+ } ,
38
+ {
39
+ type : 'input' ,
40
+ name : 'pipelining' ,
41
+ message : 'How many pipelines do you need?' ,
42
+ default : 10 ,
43
+ validate ( value ) {
44
+ return ! Number . isNaN ( parseFloat ( value ) ) || 'Please enter a number'
45
+ } ,
46
+ filter : Number
47
+ } ,
48
+ {
49
+ type : 'input' ,
50
+ name : 'duration' ,
51
+ message : 'How long should it take?' ,
52
+ default : 40 ,
53
+ validate ( value ) {
54
+ return ! Number . isNaN ( parseFloat ( value ) ) || 'Please enter a number'
55
+ } ,
56
+ filter : Number
57
+ }
58
+ ] )
59
+ }
60
+
61
+ function parseArgv ( ) {
62
+ const [ all , connections , pipelining , duration ] = argv
63
+ return {
64
+ all : all === 'y' ,
65
+ connections : + connections ,
66
+ pipelining : + pipelining ,
67
+ duration : + duration
68
+ }
69
+ }
70
+
71
+ async function select ( ) {
72
+ const result = await inquirer . prompt ( [
10
73
{
11
74
type : 'checkbox' ,
12
75
message : 'Select packages' ,
@@ -25,52 +88,5 @@ function select (callback) {
25
88
}
26
89
}
27
90
] )
28
- . then ( function ( answers ) {
29
- callback ( answers . list )
30
- } )
91
+ return result . list
31
92
}
32
-
33
- inquirer . prompt ( [
34
- {
35
- type : 'confirm' ,
36
- name : 'all' ,
37
- message : 'Do you want to run all benchmark tests?' ,
38
- default : false
39
- } ,
40
- {
41
- type : 'input' ,
42
- name : 'connections' ,
43
- message : 'How many connections do you need?' ,
44
- default : 100 ,
45
- validate ( value ) {
46
- return ! Number . isNaN ( parseFloat ( value ) ) || 'Please enter a number'
47
- } ,
48
- filter : Number
49
- } ,
50
- {
51
- type : 'input' ,
52
- name : 'pipelining' ,
53
- message : 'How many pipelines do you need?' ,
54
- default : 10 ,
55
- validate ( value ) {
56
- return ! Number . isNaN ( parseFloat ( value ) ) || 'Please enter a number'
57
- } ,
58
- filter : Number
59
- } ,
60
- {
61
- type : 'input' ,
62
- name : 'duration' ,
63
- message : 'How long should it take?' ,
64
- default : 40 ,
65
- validate ( value ) {
66
- return ! Number . isNaN ( parseFloat ( value ) ) || 'Please enter a number'
67
- } ,
68
- filter : Number
69
- }
70
- ] ) . then ( ( opts ) => {
71
- if ( ! opts . all ) {
72
- select ( list => bench ( opts , list ) )
73
- } else {
74
- bench ( opts , choices )
75
- }
76
- } )
0 commit comments