ember-app-scheduler
Version:
Ember addon to schedule work at different phases of app life cycle.
98 lines (80 loc) • 2.85 kB
JavaScript
var browserslist = require('./');
var pkg = require('./package.json');
var args = process.argv.slice(2);
var USAGE = 'Usage:\n' +
' ' + pkg.name + ' "QUERIES"\n' +
' ' + pkg.name + ' --coverage "QUERIES"\n' +
' ' + pkg.name + ' --coverage=US "QUERIES"\n' +
' ' + pkg.name + ' --config="path/to/browserlist/file"\n' +
' ' + pkg.name + ' --env="environment name defined in config"\n' +
' ' + pkg.name + ' --stats="path/to/browserlist/stats/file"';
function isArg(arg) {
return args.some(function (str) {
return str === arg || str.indexOf(arg + '=') === 0;
});
}
function error(msg) {
process.stderr.write(pkg.name + ': ' + msg + '\n');
process.exit(1);
}
if ( isArg('--help') || isArg('-h') ) {
process.stdout.write(pkg.description + '.\n\n' + USAGE + '\n');
} else if ( isArg('--version') || isArg('-v') ) {
process.stdout.write(pkg.name + ' ' + pkg.version + '\n');
} else {
var mode = 'browsers';
var opts = { };
var queries;
var country;
for ( var i = 0; i < args.length; i++ ) {
if ( args[i][0] !== '-' ) {
queries = args[i].replace(/^['"]|['"]$/g, '');
continue;
}
var arg = args[i].split('=');
var name = arg[0];
var value = arg[1];
if ( value ) value = value.replace(/^['"]|['"]$/g, '');
if ( name === '--config' || name === '-b' ) {
opts.config = value;
} else if ( name === '--env' || name === '-e' ) {
opts.env = value;
} else if ( name === '--stats' || name === '-s' ) {
opts.stats = value;
} else if ( name === '--coverage' || name === '-c' ) {
mode = 'coverage';
if ( value ) country = value;
} else {
error('Unknown arguments ' + args[i] + '.\n\n' + USAGE);
}
}
if ( !queries && !opts.config ) {
error('Define queries or browserslist config path.\n\n' + USAGE);
}
var browsers;
try {
browsers = browserslist(queries, opts);
} catch (e) {
if ( e.name === 'BrowserslistError' ) {
error(e.message);
} else {
throw e;
}
}
if ( mode === 'browsers' ) {
browsers.forEach(function (browser) {
process.stdout.write(browser + '\n');
});
} else {
var result = browserslist.coverage(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');
}
}