aboutsummaryrefslogtreecommitdiff
path: root/node_modules/browserslist/cli.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/browserslist/cli.js')
-rwxr-xr-xnode_modules/browserslist/cli.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/node_modules/browserslist/cli.js b/node_modules/browserslist/cli.js
new file mode 100755
index 00000000..c0848b20
--- /dev/null
+++ b/node_modules/browserslist/cli.js
@@ -0,0 +1,95 @@
+#!/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, opts) {
+ try {
+ return browserslist(queries, opts);
+ } 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"',
+ ' ' + pkg.name + ' --coverage=US "QUERIES"',
+ ' ' + pkg.name + ' --config=browserslist "path/to/browserlist/file"',
+ ' ' + pkg.name + ' --env="environment name defined in config"',
+ ' ' + pkg.name + ' --stats="path/to/browserlist/stats/file"'
+ ].join('\n') + '\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 if (isArg('--config') || isArg('-b')) {
+ var opts = {
+ config: getArgValue('--config') || getArgValue('-b')
+ };
+
+ if (isArg('--env') || isArg('-e')) {
+ opts.env = getArgValue('--env') || getArgValue('-e');
+ }
+
+ if (isArg('--stats') || isArg('-s')) {
+ opts.stats = getArgValue('--stats') || getArgValue('-s');
+ }
+
+ query(null, opts).forEach(function (browser) {
+ process.stdout.write(browser + '\n');
+ });
+} else {
+ error('Unknown arguments. Use --help to pick right one.');
+}