-
Notifications
You must be signed in to change notification settings - Fork 1
/
cli.js
134 lines (121 loc) · 2.83 KB
/
cli.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
const colors = require('colors');
const cli = require('command-line-args');
const path = require('path');
const cliDefinition = [
{
name: 'output',
alias: 'o',
type: String,
description: 'Save the results to a JSON file'
},
// {
// name: 'browser',
// alias: 'b',
// type: String,
// defaultValue: [],
// description: 'Browser against which the performance test will be run – Default: [chrome]'
// },
// {
// name: 'all-browsers',
// alias: 'a',
// type: Boolean,
// defaultValue: false,
// description: 'Runs against all avaliable browsers'
// },
{
name: 'runs',
type: Number,
defaultValue: 10,
description: 'Number of times the harness run (defaults to 10)'
},
{
name: 'times',
type: Number,
defaultValue: 100,
description: 'Number of times the element is instantiated per harness run (defaults to 100)'
},
{
name: 'baseline',
type: String,
defaultValue: 'input',
description: 'Base native HTML tag against which performence will be measured (defaults to input)'
},
{
name: 'components',
alias: 'c',
type: String,
multiple: true,
defaultValue: [],
description: 'Which components you want to benchmark (defaults to the content of bower.json "main" entry)'
},
{
name: 'hub',
type: String,
defaultValue: false,
description: 'Remote selenium hub address (leave empty for local)'
},
{
name: 'quiet',
alias: 'q',
type: Boolean,
defaultValue: false,
description: 'Silence output'
},
{
name: 'root',
type: String,
defaultValue: process.cwd(),
description: 'Root of the project (defaults to current location)'
},
{
name: 'path',
alias: 'p',
type: String,
defaultValue: process.cwd(),
description: 'Path to the component (defaults to current location)'
},
{
name: 'verbose',
alias: 'v',
type: Boolean,
defaultValue: false,
description: 'Verbose mode'
},
{
name: 'help',
alias: 'h',
type: Boolean,
description: 'This page'
},
{
name: 'easter',
type: Boolean,
defaultValue: false
}
];
const config = cli(cliDefinition);
if (config.help) {
const getUsage = require('command-line-usage');
// hide the easter egg
cliDefinition.splice(cliDefinition.length - 1, 1);
const sections = [{
header: 'Web Component Benchmark',
content: 'Benchmarks Web Components by running them multiple time'
}, {
header: 'Options',
optionList: cliDefinition
}];
const usage = getUsage(sections);
console.log(usage);
process.exit();
}
if (config.verbose) console.log(JSON.stringify(config, null, 2).grey);
config.root = path.resolve(process.cwd(), config.root);
if(!config.components.length)
config.components = null;
else
config.components = config.components.map(component =>
`${path.resolve(config.root, component).replace(config.root + '/', '')}`
);
config.regressions = config['regression-testing'];
module.exports = config;