UNPKG

electron-forge

Version:

A complete tool for building modern Electron applications

187 lines (141 loc) 13 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _bluebird = require('bluebird'); require('colors'); var _child_process = require('child_process'); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _oraHandler = require('../util/ora-handler'); var _oraHandler2 = _interopRequireDefault(_oraHandler); var _readPackageJson = require('../util/read-package-json'); var _readPackageJson2 = _interopRequireDefault(_readPackageJson); var _rebuild = require('../util/rebuild'); var _rebuild2 = _interopRequireDefault(_rebuild); var _resolveDir = require('../util/resolve-dir'); var _resolveDir2 = _interopRequireDefault(_resolveDir); var _forgeConfig = require('../util/forge-config'); var _forgeConfig2 = _interopRequireDefault(_forgeConfig); var _hook = require('../util/hook'); var _hook2 = _interopRequireDefault(_hook); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @typedef {Object} StartOptions * @property {string} [dir=process.cwd()] The path to the electron forge project to run * @property {string} [appPath='.'] The path (relative to dir) to the electron app to run relative to the project directory * @property {boolean} [interactive=false] Whether to use sensible defaults or prompt the user visually * @property {boolean} [enableLogging=false] Enables advanced internal Electron debug calls * @property {Array<string>} [args] Arguments to pass through to the launched Electron application */ /** * Start an Electron application. * * @param {StartOptions} providedOptions - Options for the Publish method * @return {Promise} Will resolve when the application is launched */ exports.default = function () { var _ref = (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee3() { var providedOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _Object$assign, dir, interactive, enableLogging, appPath, args, runAsNode, inspect, packageJSON, spawnOpts, spawned, forgeConfig; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: // eslint-disable-next-line prefer-const, no-unused-vars _Object$assign = (0, _assign2.default)({ dir: process.cwd(), appPath: '.', interactive: false, enableLogging: false, args: [], runAsNode: false, inspect: false }, providedOptions), dir = _Object$assign.dir, interactive = _Object$assign.interactive, enableLogging = _Object$assign.enableLogging, appPath = _Object$assign.appPath, args = _Object$assign.args, runAsNode = _Object$assign.runAsNode, inspect = _Object$assign.inspect; _oraHandler2.default.interactive = interactive; _context3.next = 4; return (0, _oraHandler2.default)('Locating Application', (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee() { return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return (0, _resolveDir2.default)(dir); case 2: dir = _context.sent; if (dir) { _context.next = 5; break; } throw 'Failed to locate startable Electron application'; case 5: case 'end': return _context.stop(); } } }, _callee, undefined); }))); case 4: _context3.next = 6; return (0, _readPackageJson2.default)(dir); case 6: packageJSON = _context3.sent; _context3.next = 9; return (0, _rebuild2.default)(dir, packageJSON.devDependencies['electron-prebuilt-compile'], process.platform, process.arch); case 9: spawnOpts = { cwd: dir, stdio: 'inherit', env: (0, _assign2.default)({}, process.env, enableLogging ? { ELECTRON_ENABLE_LOGGING: true, ELECTRON_ENABLE_STACK_DUMPING: true } : {}) }; if (runAsNode) { spawnOpts.env.ELECTRON_RUN_AS_NODE = true; } else { delete spawnOpts.env.ELECTRON_RUN_AS_NODE; } if (inspect) { args = ['--inspect'].concat(args); } spawned = void 0; _context3.next = 15; return (0, _forgeConfig2.default)(dir); case 15: forgeConfig = _context3.sent; _context3.next = 18; return (0, _hook2.default)(forgeConfig, 'generateAssets'); case 18: _context3.next = 20; return (0, _oraHandler2.default)('Launching Application', (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee2() { return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: spawned = (0, _child_process.spawn)(process.execPath, [_path2.default.resolve(dir, 'node_modules/electron-prebuilt-compile/lib/cli'), appPath].concat(args), spawnOpts); case 1: case 'end': return _context2.stop(); } } }, _callee2, undefined); }))); case 20: return _context3.abrupt('return', spawned); case 21: case 'end': return _context3.stop(); } } }, _callee3, undefined); })); return function () { return _ref.apply(this, arguments); }; }(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9zdGFydC5qcyJdLCJuYW1lcyI6WyJwcm92aWRlZE9wdGlvbnMiLCJkaXIiLCJwcm9jZXNzIiwiY3dkIiwiYXBwUGF0aCIsImludGVyYWN0aXZlIiwiZW5hYmxlTG9nZ2luZyIsImFyZ3MiLCJydW5Bc05vZGUiLCJpbnNwZWN0IiwicGFja2FnZUpTT04iLCJkZXZEZXBlbmRlbmNpZXMiLCJwbGF0Zm9ybSIsImFyY2giLCJzcGF3bk9wdHMiLCJzdGRpbyIsImVudiIsIkVMRUNUUk9OX0VOQUJMRV9MT0dHSU5HIiwiRUxFQ1RST05fRU5BQkxFX1NUQUNLX0RVTVBJTkciLCJFTEVDVFJPTl9SVU5fQVNfTk9ERSIsImNvbmNhdCIsInNwYXduZWQiLCJmb3JnZUNvbmZpZyIsImV4ZWNQYXRoIiwicmVzb2x2ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQTs7Ozs7Ozs7O0FBU0E7Ozs7Ozs7aUVBTWU7QUFBQSxRQUFPQSxlQUFQLHVFQUF5QixFQUF6Qjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNiO0FBRGEsNkJBRWdFLHNCQUFjO0FBQ3pGQyxtQkFBS0MsUUFBUUMsR0FBUixFQURvRjtBQUV6RkMsdUJBQVMsR0FGZ0Y7QUFHekZDLDJCQUFhLEtBSDRFO0FBSXpGQyw2QkFBZSxLQUowRTtBQUt6RkMsb0JBQU0sRUFMbUY7QUFNekZDLHlCQUFXLEtBTjhFO0FBT3pGQyx1QkFBUztBQVBnRixhQUFkLEVBUTFFVCxlQVIwRSxDQUZoRSxFQUVQQyxHQUZPLGtCQUVQQSxHQUZPLEVBRUZJLFdBRkUsa0JBRUZBLFdBRkUsRUFFV0MsYUFGWCxrQkFFV0EsYUFGWCxFQUUwQkYsT0FGMUIsa0JBRTBCQSxPQUYxQixFQUVtQ0csSUFGbkMsa0JBRW1DQSxJQUZuQyxFQUV5Q0MsU0FGekMsa0JBRXlDQSxTQUZ6QyxFQUVvREMsT0FGcEQsa0JBRW9EQSxPQUZwRDs7QUFXYixpQ0FBU0osV0FBVCxHQUF1QkEsV0FBdkI7O0FBWGE7QUFBQSxtQkFhUCwwQkFBUyxzQkFBVCxzREFBaUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkJBQ3pCLDBCQUFXSixHQUFYLENBRHlCOztBQUFBO0FBQ3JDQSx5QkFEcUM7O0FBQUEsMEJBRWhDQSxHQUZnQztBQUFBO0FBQUE7QUFBQTs7QUFBQSw0QkFHN0IsaURBSDZCOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQWpDLEdBYk87O0FBQUE7QUFBQTtBQUFBLG1CQW9CYSwrQkFBZ0JBLEdBQWhCLENBcEJiOztBQUFBO0FBb0JQUyx1QkFwQk87QUFBQTtBQUFBLG1CQXNCUCx1QkFBUVQsR0FBUixFQUFhUyxZQUFZQyxlQUFaLENBQTRCLDJCQUE1QixDQUFiLEVBQXVFVCxRQUFRVSxRQUEvRSxFQUF5RlYsUUFBUVcsSUFBakcsQ0F0Qk87O0FBQUE7QUF3QlBDLHFCQXhCTyxHQXdCSztBQUNoQlgsbUJBQUtGLEdBRFc7QUFFaEJjLHFCQUFPLFNBRlM7QUFHaEJDLG1CQUFLLHNCQUFjLEVBQWQsRUFBa0JkLFFBQVFjLEdBQTFCLEVBQStCVixnQkFBZ0I7QUFDbERXLHlDQUF5QixJQUR5QjtBQUVsREMsK0NBQStCO0FBRm1CLGVBQWhCLEdBR2hDLEVBSEM7QUFIVyxhQXhCTDs7O0FBaUNiLGdCQUFJVixTQUFKLEVBQWU7QUFDYk0sd0JBQVVFLEdBQVYsQ0FBY0csb0JBQWQsR0FBcUMsSUFBckM7QUFDRCxhQUZELE1BRU87QUFDTCxxQkFBT0wsVUFBVUUsR0FBVixDQUFjRyxvQkFBckI7QUFDRDs7QUFFRCxnQkFBSVYsT0FBSixFQUFhO0FBQ1hGLHFCQUFPLENBQUMsV0FBRCxFQUFjYSxNQUFkLENBQXFCYixJQUFyQixDQUFQO0FBQ0Q7O0FBRUdjLG1CQTNDUztBQUFBO0FBQUEsbUJBNkNhLDJCQUFlcEIsR0FBZixDQTdDYjs7QUFBQTtBQTZDUHFCLHVCQTdDTztBQUFBO0FBQUEsbUJBOENQLG9CQUFRQSxXQUFSLEVBQXFCLGdCQUFyQixDQTlDTzs7QUFBQTtBQUFBO0FBQUEsbUJBZ0RQLDBCQUFTLHVCQUFULHNEQUFrQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ3RDRCxnQ0FBVSwwQkFBTW5CLFFBQVFxQixRQUFkLEVBQXdCLENBQUMsZUFBS0MsT0FBTCxDQUFhdkIsR0FBYixFQUFrQixnREFBbEIsQ0FBRCxFQUFzRUcsT0FBdEUsRUFBK0VnQixNQUEvRSxDQUFzRmIsSUFBdEYsQ0FBeEIsRUFBcUhPLFNBQXJILENBQVY7O0FBRHNDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQWxDLEdBaERPOztBQUFBO0FBQUEsOENBb0ROTyxPQXBETTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHIiwiZmlsZSI6ImFwaS9zdGFydC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnY29sb3JzJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IGFzeW5jT3JhIGZyb20gJy4uL3V0aWwvb3JhLWhhbmRsZXInO1xuaW1wb3J0IHJlYWRQYWNrYWdlSlNPTiBmcm9tICcuLi91dGlsL3JlYWQtcGFja2FnZS1qc29uJztcbmltcG9ydCByZWJ1aWxkIGZyb20gJy4uL3V0aWwvcmVidWlsZCc7XG5pbXBvcnQgcmVzb2x2ZURpciBmcm9tICcuLi91dGlsL3Jlc29sdmUtZGlyJztcbmltcG9ydCBnZXRGb3JnZUNvbmZpZyBmcm9tICcuLi91dGlsL2ZvcmdlLWNvbmZpZyc7XG5pbXBvcnQgcnVuSG9vayBmcm9tICcuLi91dGlsL2hvb2snO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0T3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkaXI9cHJvY2Vzcy5jd2QoKV0gVGhlIHBhdGggdG8gdGhlIGVsZWN0cm9uIGZvcmdlIHByb2plY3QgdG8gcnVuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FwcFBhdGg9Jy4nXSBUaGUgcGF0aCAocmVsYXRpdmUgdG8gZGlyKSB0byB0aGUgZWxlY3Ryb24gYXBwIHRvIHJ1biByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCBkaXJlY3RvcnlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2ludGVyYWN0aXZlPWZhbHNlXSBXaGV0aGVyIHRvIHVzZSBzZW5zaWJsZSBkZWZhdWx0cyBvciBwcm9tcHQgdGhlIHVzZXIgdmlzdWFsbHlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2VuYWJsZUxvZ2dpbmc9ZmFsc2VdIEVuYWJsZXMgYWR2YW5jZWQgaW50ZXJuYWwgRWxlY3Ryb24gZGVidWcgY2FsbHNcbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gW2FyZ3NdIEFyZ3VtZW50cyB0byBwYXNzIHRocm91Z2ggdG8gdGhlIGxhdW5jaGVkIEVsZWN0cm9uIGFwcGxpY2F0aW9uXG4gKi9cblxuLyoqXG4gKiBTdGFydCBhbiBFbGVjdHJvbiBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1N0YXJ0T3B0aW9uc30gcHJvdmlkZWRPcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIFB1Ymxpc2ggbWV0aG9kXG4gKiBAcmV0dXJuIHtQcm9taXNlfSBXaWxsIHJlc29sdmUgd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgbGF1bmNoZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHByb3ZpZGVkT3B0aW9ucyA9IHt9KSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3QsIG5vLXVudXNlZC12YXJzXG4gIGxldCB7IGRpciwgaW50ZXJhY3RpdmUsIGVuYWJsZUxvZ2dpbmcsIGFwcFBhdGgsIGFyZ3MsIHJ1bkFzTm9kZSwgaW5zcGVjdCB9ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgZGlyOiBwcm9jZXNzLmN3ZCgpLFxuICAgIGFwcFBhdGg6ICcuJyxcbiAgICBpbnRlcmFjdGl2ZTogZmFsc2UsXG4gICAgZW5hYmxlTG9nZ2luZzogZmFsc2UsXG4gICAgYXJnczogW10sXG4gICAgcnVuQXNOb2RlOiBmYWxzZSxcbiAgICBpbnNwZWN0OiBmYWxzZSxcbiAgfSwgcHJvdmlkZWRPcHRpb25zKTtcbiAgYXN5bmNPcmEuaW50ZXJhY3RpdmUgPSBpbnRlcmFjdGl2ZTtcblxuICBhd2FpdCBhc3luY09yYSgnTG9jYXRpbmcgQXBwbGljYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgZGlyID0gYXdhaXQgcmVzb2x2ZURpcihkaXIpO1xuICAgIGlmICghZGlyKSB7XG4gICAgICB0aHJvdyAnRmFpbGVkIHRvIGxvY2F0ZSBzdGFydGFibGUgRWxlY3Ryb24gYXBwbGljYXRpb24nO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgcGFja2FnZUpTT04gPSBhd2FpdCByZWFkUGFja2FnZUpTT04oZGlyKTtcblxuICBhd2FpdCByZWJ1aWxkKGRpciwgcGFja2FnZUpTT04uZGV2RGVwZW5kZW5jaWVzWydlbGVjdHJvbi1wcmVidWlsdC1jb21waWxlJ10sIHByb2Nlc3MucGxhdGZvcm0sIHByb2Nlc3MuYXJjaCk7XG5cbiAgY29uc3Qgc3Bhd25PcHRzID0ge1xuICAgIGN3ZDogZGlyLFxuICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgZW52OiBPYmplY3QuYXNzaWduKHt9LCBwcm9jZXNzLmVudiwgZW5hYmxlTG9nZ2luZyA/IHtcbiAgICAgIEVMRUNUUk9OX0VOQUJMRV9MT0dHSU5HOiB0cnVlLFxuICAgICAgRUxFQ1RST05fRU5BQkxFX1NUQUNLX0RVTVBJTkc6IHRydWUsXG4gICAgfSA6IHt9KSxcbiAgfTtcblxuICBpZiAocnVuQXNOb2RlKSB7XG4gICAgc3Bhd25PcHRzLmVudi5FTEVDVFJPTl9SVU5fQVNfTk9ERSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIHNwYXduT3B0cy5lbnYuRUxFQ1RST05fUlVOX0FTX05PREU7XG4gIH1cblxuICBpZiAoaW5zcGVjdCkge1xuICAgIGFyZ3MgPSBbJy0taW5zcGVjdCddLmNvbmNhdChhcmdzKTtcbiAgfVxuXG4gIGxldCBzcGF3bmVkO1xuXG4gIGNvbnN0IGZvcmdlQ29uZmlnID0gYXdhaXQgZ2V0Rm9yZ2VDb25maWcoZGlyKTtcbiAgYXdhaXQgcnVuSG9vayhmb3JnZUNvbmZpZywgJ2dlbmVyYXRlQXNzZXRzJyk7XG5cbiAgYXdhaXQgYXN5bmNPcmEoJ0xhdW5jaGluZyBBcHBsaWNhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICBzcGF3bmVkID0gc3Bhd24ocHJvY2Vzcy5leGVjUGF0aCwgW3BhdGgucmVzb2x2ZShkaXIsICdub2RlX21vZHVsZXMvZWxlY3Ryb24tcHJlYnVpbHQtY29tcGlsZS9saWIvY2xpJyksIGFwcFBhdGhdLmNvbmNhdChhcmdzKSwgc3Bhd25PcHRzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNwYXduZWQ7XG59O1xuIl19