UNPKG

electron-forge

Version:

A complete tool for building modern Electron applications

141 lines (101 loc) 11.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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 _getElectronVersion = require('../util/get-electron-version'); var _getElectronVersion2 = _interopRequireDefault(_getElectronVersion); 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 = (() => { var _ref = (0, _bluebird.coroutine)(function* (providedOptions = {}) { // eslint-disable-next-line prefer-const, no-unused-vars var _Object$assign = (0, _assign2.default)({ dir: process.cwd(), appPath: '.', interactive: false, enableLogging: false, args: [], runAsNode: false, inspect: false }, providedOptions); let 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; yield (0, _oraHandler2.default)('Locating Application', (0, _bluebird.coroutine)(function* () { dir = yield (0, _resolveDir2.default)(dir); if (!dir) { throw 'Failed to locate startable Electron application'; } })); const packageJSON = yield (0, _readPackageJson2.default)(dir); if (!packageJSON.version) { throw `Please set your application's 'version' in '${dir}/package.json'.`; } const forgeConfig = yield (0, _forgeConfig2.default)(dir); const electronVersion = yield (0, _getElectronVersion2.default)(dir); yield (0, _rebuild2.default)(dir, electronVersion, process.platform, process.arch, forgeConfig.electronRebuildConfig); const 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); } let spawned; yield (0, _hook2.default)(forgeConfig, 'generateAssets'); yield (0, _oraHandler2.default)('Launching Application', (0, _bluebird.coroutine)(function* () { spawned = (0, _child_process.spawn)(process.execPath, [_path2.default.resolve(dir, 'node_modules/electron-prebuilt-compile/lib/cli'), appPath].concat(args), spawnOpts); })); return spawned; }); return function () { return _ref.apply(this, arguments); }; })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9zdGFydC5qcyJdLCJuYW1lcyI6WyJwcm92aWRlZE9wdGlvbnMiLCJkaXIiLCJwcm9jZXNzIiwiY3dkIiwiYXBwUGF0aCIsImludGVyYWN0aXZlIiwiZW5hYmxlTG9nZ2luZyIsImFyZ3MiLCJydW5Bc05vZGUiLCJpbnNwZWN0IiwiYXN5bmNPcmEiLCJwYWNrYWdlSlNPTiIsInZlcnNpb24iLCJmb3JnZUNvbmZpZyIsImVsZWN0cm9uVmVyc2lvbiIsInBsYXRmb3JtIiwiYXJjaCIsImVsZWN0cm9uUmVidWlsZENvbmZpZyIsInNwYXduT3B0cyIsInN0ZGlvIiwiZW52IiwiRUxFQ1RST05fRU5BQkxFX0xPR0dJTkciLCJFTEVDVFJPTl9FTkFCTEVfU1RBQ0tfRFVNUElORyIsIkVMRUNUUk9OX1JVTl9BU19OT0RFIiwiY29uY2F0Iiwic3Bhd25lZCIsImV4ZWNQYXRoIiwicGF0aCIsInJlc29sdmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBOzs7Ozs7Ozs7QUFTQTs7Ozs7OztzQ0FNZSxXQUFPQSxrQkFBa0IsRUFBekIsRUFBZ0M7QUFDN0M7QUFENkMseUJBRWdDLHNCQUFjO0FBQ3pGQyxXQUFLQyxRQUFRQyxHQUFSLEVBRG9GO0FBRXpGQyxlQUFTLEdBRmdGO0FBR3pGQyxtQkFBYSxLQUg0RTtBQUl6RkMscUJBQWUsS0FKMEU7QUFLekZDLFlBQU0sRUFMbUY7QUFNekZDLGlCQUFXLEtBTjhFO0FBT3pGQyxlQUFTO0FBUGdGLEtBQWQsRUFRMUVULGVBUjBFLENBRmhDOztBQUFBLFFBRXZDQyxHQUZ1QyxrQkFFdkNBLEdBRnVDO0FBQUEsUUFFbENJLFdBRmtDLGtCQUVsQ0EsV0FGa0M7QUFBQSxRQUVyQkMsYUFGcUIsa0JBRXJCQSxhQUZxQjtBQUFBLFFBRU5GLE9BRk0sa0JBRU5BLE9BRk07QUFBQSxRQUVHRyxJQUZILGtCQUVHQSxJQUZIO0FBQUEsUUFFU0MsU0FGVCxrQkFFU0EsU0FGVDtBQUFBLFFBRW9CQyxPQUZwQixrQkFFb0JBLE9BRnBCOztBQVc3Q0MseUJBQVNMLFdBQVQsR0FBdUJBLFdBQXZCOztBQUVBLFVBQU0sMEJBQVMsc0JBQVQsMkJBQWlDLGFBQVk7QUFDakRKLFlBQU0sTUFBTSwwQkFBV0EsR0FBWCxDQUFaO0FBQ0EsVUFBSSxDQUFDQSxHQUFMLEVBQVU7QUFDUixjQUFNLGlEQUFOO0FBQ0Q7QUFDRixLQUxLLEVBQU47O0FBT0EsVUFBTVUsY0FBYyxNQUFNLCtCQUFnQlYsR0FBaEIsQ0FBMUI7O0FBRUEsUUFBSSxDQUFDVSxZQUFZQyxPQUFqQixFQUEwQjtBQUN4QixZQUFPLCtDQUE4Q1gsR0FBSSxpQkFBekQ7QUFDRDs7QUFFRCxVQUFNWSxjQUFjLE1BQU0sMkJBQWVaLEdBQWYsQ0FBMUI7QUFDQSxVQUFNYSxrQkFBa0IsTUFBTSxrQ0FBbUJiLEdBQW5CLENBQTlCOztBQUVBLFVBQU0sdUJBQVFBLEdBQVIsRUFBYWEsZUFBYixFQUE4QlosUUFBUWEsUUFBdEMsRUFBZ0RiLFFBQVFjLElBQXhELEVBQThESCxZQUFZSSxxQkFBMUUsQ0FBTjs7QUFFQSxVQUFNQyxZQUFZO0FBQ2hCZixXQUFLRixHQURXO0FBRWhCa0IsYUFBTyxTQUZTO0FBR2hCQyxXQUFLLHNCQUFjLEVBQWQsRUFBa0JsQixRQUFRa0IsR0FBMUIsRUFBK0JkLGdCQUFnQjtBQUNsRGUsaUNBQXlCLElBRHlCO0FBRWxEQyx1Q0FBK0I7QUFGbUIsT0FBaEIsR0FHaEMsRUFIQztBQUhXLEtBQWxCOztBQVNBLFFBQUlkLFNBQUosRUFBZTtBQUNiVSxnQkFBVUUsR0FBVixDQUFjRyxvQkFBZCxHQUFxQyxJQUFyQztBQUNELEtBRkQsTUFFTztBQUNMLGFBQU9MLFVBQVVFLEdBQVYsQ0FBY0csb0JBQXJCO0FBQ0Q7O0FBRUQsUUFBSWQsT0FBSixFQUFhO0FBQ1hGLGFBQU8sQ0FBQyxXQUFELEVBQWNpQixNQUFkLENBQXFCakIsSUFBckIsQ0FBUDtBQUNEOztBQUVELFFBQUlrQixPQUFKOztBQUVBLFVBQU0sb0JBQVFaLFdBQVIsRUFBcUIsZ0JBQXJCLENBQU47O0FBRUEsVUFBTSwwQkFBUyx1QkFBVCwyQkFBa0MsYUFBWTtBQUNsRFksZ0JBQVUsMEJBQU12QixRQUFRd0IsUUFBZCxFQUF3QixDQUFDQyxlQUFLQyxPQUFMLENBQWEzQixHQUFiLEVBQWtCLGdEQUFsQixDQUFELEVBQXNFRyxPQUF0RSxFQUErRW9CLE1BQS9FLENBQXNGakIsSUFBdEYsQ0FBeEIsRUFBcUhXLFNBQXJILENBQVY7QUFDRCxLQUZLLEVBQU47O0FBSUEsV0FBT08sT0FBUDtBQUNELEciLCJmaWxlIjoiYXBpL3N0YXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdjb2xvcnMnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgYXN5bmNPcmEgZnJvbSAnLi4vdXRpbC9vcmEtaGFuZGxlcic7XG5pbXBvcnQgZ2V0RWxlY3Ryb25WZXJzaW9uIGZyb20gJy4uL3V0aWwvZ2V0LWVsZWN0cm9uLXZlcnNpb24nO1xuaW1wb3J0IHJlYWRQYWNrYWdlSlNPTiBmcm9tICcuLi91dGlsL3JlYWQtcGFja2FnZS1qc29uJztcbmltcG9ydCByZWJ1aWxkIGZyb20gJy4uL3V0aWwvcmVidWlsZCc7XG5pbXBvcnQgcmVzb2x2ZURpciBmcm9tICcuLi91dGlsL3Jlc29sdmUtZGlyJztcbmltcG9ydCBnZXRGb3JnZUNvbmZpZyBmcm9tICcuLi91dGlsL2ZvcmdlLWNvbmZpZyc7XG5pbXBvcnQgcnVuSG9vayBmcm9tICcuLi91dGlsL2hvb2snO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0T3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkaXI9cHJvY2Vzcy5jd2QoKV0gVGhlIHBhdGggdG8gdGhlIGVsZWN0cm9uIGZvcmdlIHByb2plY3QgdG8gcnVuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FwcFBhdGg9Jy4nXSBUaGUgcGF0aCAocmVsYXRpdmUgdG8gZGlyKSB0byB0aGUgZWxlY3Ryb24gYXBwIHRvIHJ1biByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCBkaXJlY3RvcnlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2ludGVyYWN0aXZlPWZhbHNlXSBXaGV0aGVyIHRvIHVzZSBzZW5zaWJsZSBkZWZhdWx0cyBvciBwcm9tcHQgdGhlIHVzZXIgdmlzdWFsbHlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2VuYWJsZUxvZ2dpbmc9ZmFsc2VdIEVuYWJsZXMgYWR2YW5jZWQgaW50ZXJuYWwgRWxlY3Ryb24gZGVidWcgY2FsbHNcbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gW2FyZ3NdIEFyZ3VtZW50cyB0byBwYXNzIHRocm91Z2ggdG8gdGhlIGxhdW5jaGVkIEVsZWN0cm9uIGFwcGxpY2F0aW9uXG4gKi9cblxuLyoqXG4gKiBTdGFydCBhbiBFbGVjdHJvbiBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1N0YXJ0T3B0aW9uc30gcHJvdmlkZWRPcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIFB1Ymxpc2ggbWV0aG9kXG4gKiBAcmV0dXJuIHtQcm9taXNlfSBXaWxsIHJlc29sdmUgd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgbGF1bmNoZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHByb3ZpZGVkT3B0aW9ucyA9IHt9KSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3QsIG5vLXVudXNlZC12YXJzXG4gIGxldCB7IGRpciwgaW50ZXJhY3RpdmUsIGVuYWJsZUxvZ2dpbmcsIGFwcFBhdGgsIGFyZ3MsIHJ1bkFzTm9kZSwgaW5zcGVjdCB9ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgZGlyOiBwcm9jZXNzLmN3ZCgpLFxuICAgIGFwcFBhdGg6ICcuJyxcbiAgICBpbnRlcmFjdGl2ZTogZmFsc2UsXG4gICAgZW5hYmxlTG9nZ2luZzogZmFsc2UsXG4gICAgYXJnczogW10sXG4gICAgcnVuQXNOb2RlOiBmYWxzZSxcbiAgICBpbnNwZWN0OiBmYWxzZSxcbiAgfSwgcHJvdmlkZWRPcHRpb25zKTtcbiAgYXN5bmNPcmEuaW50ZXJhY3RpdmUgPSBpbnRlcmFjdGl2ZTtcblxuICBhd2FpdCBhc3luY09yYSgnTG9jYXRpbmcgQXBwbGljYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgZGlyID0gYXdhaXQgcmVzb2x2ZURpcihkaXIpO1xuICAgIGlmICghZGlyKSB7XG4gICAgICB0aHJvdyAnRmFpbGVkIHRvIGxvY2F0ZSBzdGFydGFibGUgRWxlY3Ryb24gYXBwbGljYXRpb24nO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgcGFja2FnZUpTT04gPSBhd2FpdCByZWFkUGFja2FnZUpTT04oZGlyKTtcblxuICBpZiAoIXBhY2thZ2VKU09OLnZlcnNpb24pIHtcbiAgICB0aHJvdyBgUGxlYXNlIHNldCB5b3VyIGFwcGxpY2F0aW9uJ3MgJ3ZlcnNpb24nIGluICcke2Rpcn0vcGFja2FnZS5qc29uJy5gO1xuICB9XG5cbiAgY29uc3QgZm9yZ2VDb25maWcgPSBhd2FpdCBnZXRGb3JnZUNvbmZpZyhkaXIpO1xuICBjb25zdCBlbGVjdHJvblZlcnNpb24gPSBhd2FpdCBnZXRFbGVjdHJvblZlcnNpb24oZGlyKTtcblxuICBhd2FpdCByZWJ1aWxkKGRpciwgZWxlY3Ryb25WZXJzaW9uLCBwcm9jZXNzLnBsYXRmb3JtLCBwcm9jZXNzLmFyY2gsIGZvcmdlQ29uZmlnLmVsZWN0cm9uUmVidWlsZENvbmZpZyk7XG5cbiAgY29uc3Qgc3Bhd25PcHRzID0ge1xuICAgIGN3ZDogZGlyLFxuICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgZW52OiBPYmplY3QuYXNzaWduKHt9LCBwcm9jZXNzLmVudiwgZW5hYmxlTG9nZ2luZyA/IHtcbiAgICAgIEVMRUNUUk9OX0VOQUJMRV9MT0dHSU5HOiB0cnVlLFxuICAgICAgRUxFQ1RST05fRU5BQkxFX1NUQUNLX0RVTVBJTkc6IHRydWUsXG4gICAgfSA6IHt9KSxcbiAgfTtcblxuICBpZiAocnVuQXNOb2RlKSB7XG4gICAgc3Bhd25PcHRzLmVudi5FTEVDVFJPTl9SVU5fQVNfTk9ERSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIHNwYXduT3B0cy5lbnYuRUxFQ1RST05fUlVOX0FTX05PREU7XG4gIH1cblxuICBpZiAoaW5zcGVjdCkge1xuICAgIGFyZ3MgPSBbJy0taW5zcGVjdCddLmNvbmNhdChhcmdzKTtcbiAgfVxuXG4gIGxldCBzcGF3bmVkO1xuXG4gIGF3YWl0IHJ1bkhvb2soZm9yZ2VDb25maWcsICdnZW5lcmF0ZUFzc2V0cycpO1xuXG4gIGF3YWl0IGFzeW5jT3JhKCdMYXVuY2hpbmcgQXBwbGljYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgc3Bhd25lZCA9IHNwYXduKHByb2Nlc3MuZXhlY1BhdGgsIFtwYXRoLnJlc29sdmUoZGlyLCAnbm9kZV9tb2R1bGVzL2VsZWN0cm9uLXByZWJ1aWx0LWNvbXBpbGUvbGliL2NsaScpLCBhcHBQYXRoXS5jb25jYXQoYXJncyksIHNwYXduT3B0cyk7XG4gIH0pO1xuXG4gIHJldHVybiBzcGF3bmVkO1xufTtcbiJdfQ==