UNPKG

electron-compile

Version:

Electron supporting package to compile JS and CSS in Electron applications

180 lines (131 loc) 12.7 kB
#!/usr/bin/env node 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.main = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var main = exports.main = function () { var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(appDir, sourceDirs, cacheDir) { var _this = this; var compilerHost, rootCacheDir; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: compilerHost = null; if (!cacheDir || cacheDir.length < 1) { cacheDir = '.cache'; } rootCacheDir = _path2.default.join(appDir, cacheDir); _mkdirp2.default.sync(rootCacheDir); if (process.env.NODE_ENV !== 'production') { console.log('Using NODE_ENV = ' + (process.env.NODE_ENV || 'development')); } d('main: ' + appDir + ', ' + (0, _stringify2.default)(sourceDirs)); _context2.prev = 6; _context2.next = 9; return (0, _configParser.createCompilerHostFromProjectRoot)(appDir, rootCacheDir); case 9: compilerHost = _context2.sent; _context2.next = 17; break; case 12: _context2.prev = 12; _context2.t0 = _context2['catch'](6); console.error('Couldn\'t set up compilers: ' + _context2.t0.message); d(_context2.t0.stack); throw _context2.t0; case 17: _context2.next = 19; return _promise2.default.all(sourceDirs.map(function (dir) { return (0, _forAllFiles.forAllFiles)(dir, function () { var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(f) { return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; d('Starting compilation for ' + f); _context.next = 4; return compilerHost.compile(f); case 4: _context.next = 11; break; case 6: _context.prev = 6; _context.t0 = _context['catch'](0); console.error('Failed to compile file: ' + f); console.error(_context.t0.message); d(_context.t0.stack); case 11: case 'end': return _context.stop(); } } }, _callee, _this, [[0, 6]]); })); return function (_x4) { return _ref2.apply(this, arguments); }; }()); })); case 19: d('Saving out configuration'); _context2.next = 22; return compilerHost.saveConfiguration(); case 22: case 'end': return _context2.stop(); } } }, _callee2, this, [[6, 12]]); })); return function main(_x, _x2, _x3) { return _ref.apply(this, arguments); }; }(); require('./babel-maybefill'); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _mkdirp = require('mkdirp'); var _mkdirp2 = _interopRequireDefault(_mkdirp); var _configParser = require('./config-parser'); var _forAllFiles = require('./for-all-files'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } process.on('unhandledRejection', function (e) { d(e.message || e); d(e.stack || ''); }); process.on('uncaughtException', function (e) { d(e.message || e); d(e.stack || ''); }); var d = require('debug-electron')('electron-compile'); var yargs = require('yargs').usage('Usage: electron-compile --appdir [root-app-dir] paths...').alias('a', 'appdir').describe('a', 'The top-level application directory (i.e. where your package.json is)').default('a', process.cwd()).alias('c', 'cachedir').describe('c', 'The directory to put the cache').default('c', '.cache').help('h').alias('h', 'help').epilog('Copyright 2015'); if (process.mainModule === module) { var argv = yargs.argv; if (!argv._ || argv._.length < 1) { yargs.showHelp(); process.exit(-1); } var sourceDirs = argv._; var appDir = argv.a; var cacheDir = argv.c; main(appDir, sourceDirs, cacheDir).then(function () { return process.exit(0); }).catch(function (e) { console.error(e.message || e); d(e.stack); console.error("Compilation failed!\nFor extra information, set the DEBUG environment variable to '*'"); process.exit(-1); }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGkuanMiXSwibmFtZXMiOlsiYXBwRGlyIiwic291cmNlRGlycyIsImNhY2hlRGlyIiwiY29tcGlsZXJIb3N0IiwibGVuZ3RoIiwicm9vdENhY2hlRGlyIiwiam9pbiIsInN5bmMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwibG9nIiwiZCIsImVycm9yIiwibWVzc2FnZSIsInN0YWNrIiwiYWxsIiwibWFwIiwiZGlyIiwiZiIsImNvbXBpbGUiLCJzYXZlQ29uZmlndXJhdGlvbiIsIm1haW4iLCJvbiIsImUiLCJyZXF1aXJlIiwieWFyZ3MiLCJ1c2FnZSIsImFsaWFzIiwiZGVzY3JpYmUiLCJkZWZhdWx0IiwiY3dkIiwiaGVscCIsImVwaWxvZyIsIm1haW5Nb2R1bGUiLCJtb2R1bGUiLCJhcmd2IiwiXyIsInNob3dIZWxwIiwiZXhpdCIsImEiLCJjIiwidGhlbiIsImNhdGNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0VBbUJPLGtCQUFvQkEsTUFBcEIsRUFBNEJDLFVBQTVCLEVBQXdDQyxRQUF4QztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDREMsd0JBREMsR0FDYyxJQURkOztBQUVMLGdCQUFJLENBQUNELFFBQUQsSUFBYUEsU0FBU0UsTUFBVCxHQUFrQixDQUFuQyxFQUFzQztBQUNwQ0YseUJBQVcsUUFBWDtBQUNEOztBQUVHRyx3QkFOQyxHQU1jLGVBQUtDLElBQUwsQ0FBVU4sTUFBVixFQUFrQkUsUUFBbEIsQ0FOZDs7QUFPTCw2QkFBT0ssSUFBUCxDQUFZRixZQUFaOztBQUVBLGdCQUFJRyxRQUFRQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekNDLHNCQUFRQyxHQUFSLHdCQUFnQ0osUUFBUUMsR0FBUixDQUFZQyxRQUFaLElBQXdCLGFBQXhEO0FBQ0Q7O0FBRURHLHlCQUFXYixNQUFYLFVBQXNCLHlCQUFlQyxVQUFmLENBQXRCO0FBYks7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SSxLQUZILENBRVMsVUFBQ25CLENBQUQsRUFBTztBQUNaZCxZQUFRRyxLQUFSLENBQWNXLEVBQUVWLE9BQUYsSUFBYVUsQ0FBM0I7QUFDQVosTUFBRVksRUFBRVQsS0FBSjs7QUFFQUwsWUFBUUcsS0FBUixDQUFjLHVGQUFkO0FBQ0FOLFlBQVFnQyxJQUFSLENBQWEsQ0FBQyxDQUFkO0FBQ0QsR0FSSDtBQVNEIiwiZmlsZSI6ImNsaS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgJy4vYmFiZWwtbWF5YmVmaWxsJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG1rZGlycCBmcm9tICdta2RpcnAnO1xuXG5pbXBvcnQge2NyZWF0ZUNvbXBpbGVySG9zdEZyb21Qcm9qZWN0Um9vdH0gZnJvbSAnLi9jb25maWctcGFyc2VyJztcbmltcG9ydCB7Zm9yQWxsRmlsZXN9IGZyb20gJy4vZm9yLWFsbC1maWxlcyc7XG5cbnByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlKSA9PiB7XG4gIGQoZS5tZXNzYWdlIHx8IGUpO1xuICBkKGUuc3RhY2sgfHwgJycpO1xufSk7XG5cbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGUpID0+IHtcbiAgZChlLm1lc3NhZ2UgfHwgZSk7XG4gIGQoZS5zdGFjayB8fCAnJyk7XG59KTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1haW4oYXBwRGlyLCBzb3VyY2VEaXJzLCBjYWNoZURpcikge1xuICBsZXQgY29tcGlsZXJIb3N0ID0gbnVsbDtcbiAgaWYgKCFjYWNoZURpciB8fCBjYWNoZURpci5sZW5ndGggPCAxKSB7XG4gICAgY2FjaGVEaXIgPSAnLmNhY2hlJztcbiAgfVxuXG4gIGxldCByb290Q2FjaGVEaXIgPSBwYXRoLmpvaW4oYXBwRGlyLCBjYWNoZURpcik7XG4gIG1rZGlycC5zeW5jKHJvb3RDYWNoZURpcik7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zb2xlLmxvZyhgVXNpbmcgTk9ERV9FTlYgPSAke3Byb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdkZXZlbG9wbWVudCd9YCk7XG4gIH1cblxuICBkKGBtYWluOiAke2FwcERpcn0sICR7SlNPTi5zdHJpbmdpZnkoc291cmNlRGlycyl9YCk7XG4gIHRyeSB7XG4gICAgY29tcGlsZXJIb3N0ID0gYXdhaXQgY3JlYXRlQ29tcGlsZXJIb3N0RnJvbVByb2plY3RSb290KGFwcERpciwgcm9vdENhY2hlRGlyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkbid0IHNldCB1cCBjb21waWxlcnM6ICR7ZS5tZXNzYWdlfWApO1xuICAgIGQoZS5zdGFjayk7XG5cbiAgICB0aHJvdyBlO1xuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoc291cmNlRGlycy5tYXAoKGRpcikgPT4gZm9yQWxsRmlsZXMoZGlyLCBhc3luYyAoZikgPT4ge1xuICAgIHRyeSB7XG4gICAgICBkKGBTdGFydGluZyBjb21waWxhdGlvbiBmb3IgJHtmfWApO1xuICAgICAgYXdhaXQgY29tcGlsZXJIb3N0LmNvbXBpbGUoZik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNvbXBpbGUgZmlsZTogJHtmfWApO1xuICAgICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpO1xuXG4gICAgICBkKGUuc3RhY2spO1xuICAgIH1cbiAgfSkpKTtcblxuICBkKCdTYXZpbmcgb3V0IGNvbmZpZ3VyYXRpb24nKTtcbiAgYXdhaXQgY29tcGlsZXJIb3N0LnNhdmVDb25maWd1cmF0aW9uKCk7XG59XG5cbmNvbnN0IGQgPSByZXF1aXJlKCdkZWJ1Zy1lbGVjdHJvbicpKCdlbGVjdHJvbi1jb21waWxlJyk7XG5cbmNvbnN0IHlhcmdzID0gcmVxdWlyZSgneWFyZ3MnKVxuICAudXNhZ2UoJ1VzYWdlOiBlbGVjdHJvbi1jb21waWxlIC0tYXBwZGlyIFtyb290LWFwcC1kaXJdIHBhdGhzLi4uJylcbiAgLmFsaWFzKCdhJywgJ2FwcGRpcicpXG4gIC5kZXNjcmliZSgnYScsICdUaGUgdG9wLWxldmVsIGFwcGxpY2F0aW9uIGRpcmVjdG9yeSAoaS5lLiB3aGVyZSB5b3VyIHBhY2thZ2UuanNvbiBpcyknKVxuICAuZGVmYXVsdCgnYScsIHByb2Nlc3MuY3dkKCkpXG4gIC5hbGlhcygnYycsICdjYWNoZWRpcicpXG4gIC5kZXNjcmliZSgnYycsICdUaGUgZGlyZWN0b3J5IHRvIHB1dCB0aGUgY2FjaGUnKVxuICAuZGVmYXVsdCgnYycsICcuY2FjaGUnKVxuICAuaGVscCgnaCcpXG4gIC5hbGlhcygnaCcsICdoZWxwJylcbiAgLmVwaWxvZygnQ29weXJpZ2h0IDIwMTUnKTtcblxuaWYgKHByb2Nlc3MubWFpbk1vZHVsZSA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IGFyZ3YgPSB5YXJncy5hcmd2O1xuXG4gIGlmICghYXJndi5fIHx8IGFyZ3YuXy5sZW5ndGggPCAxKSB7XG4gICAgeWFyZ3Muc2hvd0hlbHAoKTtcbiAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICB9XG5cbiAgY29uc3Qgc291cmNlRGlycyA9IGFyZ3YuXztcbiAgY29uc3QgYXBwRGlyID0gYXJndi5hO1xuICBjb25zdCBjYWNoZURpciA9IGFyZ3YuYztcblxuICBtYWluKGFwcERpciwgc291cmNlRGlycywgY2FjaGVEaXIpXG4gICAgLnRoZW4oKCkgPT4gcHJvY2Vzcy5leGl0KDApKVxuICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UgfHwgZSk7XG4gICAgICBkKGUuc3RhY2spO1xuXG4gICAgICBjb25zb2xlLmVycm9yKFwiQ29tcGlsYXRpb24gZmFpbGVkIVxcbkZvciBleHRyYSBpbmZvcm1hdGlvbiwgc2V0IHRoZSBERUJVRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byAnKidcIik7XG4gICAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICAgIH0pO1xufVxuIl19