UNPKG

bundlewatch

Version:
142 lines (108 loc) 5.13 kB
#!/usr/bin/env node 'use strict'; var _commander = require('commander'); var _commander2 = _interopRequireDefault(_commander); var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); var _determineConfig = require('./determineConfig'); var _determineConfig2 = _interopRequireDefault(_determineConfig); var _logger = require('../logger'); var _logger2 = _interopRequireDefault(_logger); var _app = require('../app'); var _app2 = _interopRequireDefault(_app); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } const prettyPrintResults = fullResults => { _logger2.default.log(''); fullResults.forEach(result => { const filePath = _chalk2.default.italic(result.filePath) + ':'; if (result.error) { _logger2.default.log(`${_chalk2.default.red('ERROR')} ${filePath} ${result.error}`); return; } if (result.status === _app.STATUSES.FAIL) { _logger2.default.log(`${_chalk2.default.redBright('FAIL')} ${filePath} ${result.message}`); return; } if (result.status === _app.STATUSES.WARN) { _logger2.default.log(`${_chalk2.default.yellowBright('WARN')} ${filePath} ${result.message}`); return; } _logger2.default.log(`${_chalk2.default.greenBright('PASS')} ${filePath} ${result.message}`); }); _logger2.default.log(''); }; const main = (() => { var _ref = _asyncToGenerator(function* () { const config = (0, _determineConfig2.default)(_commander2.default); if (config.files && config.files.length > 0) { const results = yield (0, _app2.default)(config); if (results.url) { _logger2.default.log(''); _logger2.default.log(`${_chalk2.default.cyanBright('Result breakdown at:')} ${results.url}`); } prettyPrintResults(results.fullResults); if (results.status === _app.STATUSES.FAIL) { _logger2.default.log(_chalk2.default.redBright(`bundlewatch FAIL`)); _logger2.default.log(results.summary); _logger2.default.log(''); return 1; } if (results.status === _app.STATUSES.WARN) { _logger2.default.log(_chalk2.default.redBright(`bundlewatch WARN`)); _logger2.default.log(results.summary); _logger2.default.log(''); return 0; } _logger2.default.log(_chalk2.default.greenBright(`bundlewatch PASS`)); _logger2.default.log(results.summary); _logger2.default.log(''); return 0; } _logger2.default.error(`Configuration missing: Run ${_chalk2.default.italic('bundlewatch --help')} for examples and options Documentation available at: http://bundlewatch.io/`); return 1; }); return function main() { return _ref.apply(this, arguments); }; })(); const mainSafe = (() => { var _ref2 = _asyncToGenerator(function* () { try { const errorCode = yield main(); return errorCode; } catch (error) { if (error.type === 'ValidationError') { _logger2.default.fatal(error.message); return 1; } _logger2.default.fatal(`Uncaught exception`, error); return 1; } }); return function mainSafe() { return _ref2.apply(this, arguments); }; })(); _commander2.default.usage('[options] <filePathGlobs ...>').option('--config [configFilePath]', 'file to read configuration from, if used all options are blown away').option('--max-size [maxSize]', 'maximum size threshold (e.g. 3kb)').option('--compression [compression]', 'specify which compression algorithm to use'); _commander2.default.on('--help', () => { _logger2.default.log(''); _logger2.default.log(' Examples:'); _logger2.default.log(''); _logger2.default.log(' Read configuration from package.json'); _logger2.default.log(' $ bundlewatch '); _logger2.default.log(''); _logger2.default.log(' Read configuration from file'); _logger2.default.log(' $ bundlewatch --config internals/bundlewatch.config.js'); _logger2.default.log(''); _logger2.default.log(' Use command line'); _logger2.default.log(' $ bundlewatch --max-size 100KB ./src/*.js /lib/*.js'); _logger2.default.log(''); _logger2.default.log(''); }); _commander2.default.parse(process.argv); mainSafe().then(errorCode => { process.exitCode = errorCode; });