forked from browserslist/browserslist
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcli.js
executable file
·78 lines (64 loc) · 2.14 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
#!/usr/bin/env node
var browserslist = require('./');
var pkg = require('./package.json');
var args = process.argv.slice(2);
function isArg(arg) {
return args.some(function (str) {
return str === arg || str.indexOf(arg + '=') === 0;
});
}
function getArgValue(arg) {
var found = args.filter(function (str) {
return str.indexOf(arg + '=') === 0;
})[0];
var value = found && found.split('=')[1];
return value && value.replace(/^['"]|['"]$/g, '');
}
function error(msg) {
process.stderr.write(pkg.name + ': ' + msg + '\n');
process.exit(1);
}
function query(queries) {
try {
return browserslist(queries);
} catch (e) {
if ( e.name === 'BrowserslistError' ) {
return error(e.message);
} else {
throw e;
}
}
}
if ( args.length === 0 || isArg('--help') || isArg('-h') ) {
process.stdout.write([
pkg.description,
'',
'Usage:',
' ' + pkg.name + ' "QUERIES"',
' ' + pkg.name + ' --coverage "QUERIES"'
].join('\n') + '\n');
} else if ( isArg('--version') || isArg('-v') ) {
process.stdout.write(pkg.name + ' ' + pkg.version + '\n');
} else if ( isArg('--version') || isArg('-v') ) {
process.stdout.write(pkg.name + ' ' + pkg.version + '\n');
} else if ( isArg('--coverage') || isArg('-c') ) {
var browsers = args.find(function (i) {
return i[0] !== '-';
});
if ( !browsers ) error('Define a browsers query to get coverage');
var country = getArgValue('--coverage') || getArgValue('-c');
var result = browserslist.coverage(query(browsers), country);
var round = Math.round(result * 100) / 100.0;
var end = 'globally';
if (country && country !== 'global') {
end = 'in the ' + country.toUpperCase();
}
process.stdout.write(
'These browsers account for ' + round + '% of all users ' + end + '\n');
} else if ( args.length === 1 && args[0][0] !== '-' ) {
query(args[0]).forEach(function (browser) {
process.stdout.write(browser + '\n');
});
} else {
error('Unknown arguments. Use --help to pick right one.');
}