electron-forge
Version:
A complete tool for building modern Electron applications
129 lines (93 loc) • 6.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _bluebird = require('bluebird');
var _fsExtra = require('fs-extra');
var _fsExtra2 = _interopRequireDefault(_fsExtra);
var _inquirer = require('inquirer');
var _inquirer2 = _interopRequireDefault(_inquirer);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _pify = require('pify');
var _pify2 = _interopRequireDefault(_pify);
var _sudoPrompt = require('sudo-prompt');
var _sudoPrompt2 = _interopRequireDefault(_sudoPrompt);
var _child_process = require('child_process');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function () {
var _ref = (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee(appPath, targetApplicationPath, spinner) {
var copyInstead = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var writeAccess, _ref2, confirm, moveCommand;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
writeAccess = true;
_context.prev = 1;
_context.next = 4;
return _fsExtra2.default.access('/Applications', _fsExtra2.default.W_OK);
case 4:
_context.next = 9;
break;
case 6:
_context.prev = 6;
_context.t0 = _context['catch'](1);
writeAccess = false;
case 9:
_context.next = 11;
return _fsExtra2.default.pathExists(targetApplicationPath);
case 11:
if (!_context.sent) {
_context.next = 24;
break;
}
spinner.stop();
_context.next = 15;
return _inquirer2.default.createPromptModule()({
type: 'confirm',
name: 'confirm',
message: 'The application "' + _path2.default.basename(targetApplicationPath) + '" appears to already exist in /Applications. Do you want to replace it?'
});
case 15:
_ref2 = _context.sent;
confirm = _ref2.confirm;
if (confirm) {
_context.next = 21;
break;
}
throw 'Installation stopped by user';
case 21:
spinner.start();
_context.next = 24;
return _fsExtra2.default.remove(targetApplicationPath);
case 24:
moveCommand = (copyInstead ? 'cp -r' : 'mv') + ' "' + appPath + '" "' + targetApplicationPath + '"';
if (!writeAccess) {
_context.next = 30;
break;
}
_context.next = 28;
return (0, _pify2.default)(_child_process.exec)(moveCommand);
case 28:
_context.next = 32;
break;
case 30:
_context.next = 32;
return (0, _pify2.default)(_sudoPrompt2.default.exec)(moveCommand, {
name: 'Electron Forge'
});
case 32:
case 'end':
return _context.stop();
}
}
}, _callee, undefined, [[1, 6]]);
}));
return function (_x, _x2, _x3) {
return _ref.apply(this, arguments);
};
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWwvbW92ZS1hcHAuanMiXSwibmFtZXMiOlsiYXBwUGF0aCIsInRhcmdldEFwcGxpY2F0aW9uUGF0aCIsInNwaW5uZXIiLCJjb3B5SW5zdGVhZCIsIndyaXRlQWNjZXNzIiwiYWNjZXNzIiwiV19PSyIsInBhdGhFeGlzdHMiLCJzdG9wIiwiY3JlYXRlUHJvbXB0TW9kdWxlIiwidHlwZSIsIm5hbWUiLCJtZXNzYWdlIiwiYmFzZW5hbWUiLCJjb25maXJtIiwic3RhcnQiLCJyZW1vdmUiLCJtb3ZlQ29tbWFuZCIsImV4ZWMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7aUVBRWUsaUJBQU9BLE9BQVAsRUFBZ0JDLHFCQUFoQixFQUF1Q0MsT0FBdkM7QUFBQSxRQUFnREMsV0FBaEQsdUVBQThELEtBQTlEOztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ1RDLHVCQURTLEdBQ0ssSUFETDtBQUFBO0FBQUE7QUFBQSxtQkFHTCxrQkFBR0MsTUFBSCxDQUFVLGVBQVYsRUFBMkIsa0JBQUdDLElBQTlCLENBSEs7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFLWEYsMEJBQWMsS0FBZDs7QUFMVztBQUFBO0FBQUEsbUJBUUgsa0JBQUdHLFVBQUgsQ0FBY04scUJBQWQsQ0FSRzs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQVNYQyxvQkFBUU0sSUFBUjtBQVRXO0FBQUEsbUJBVWUsbUJBQVNDLGtCQUFULEdBQThCO0FBQ3REQyxvQkFBTSxTQURnRDtBQUV0REMsb0JBQU0sU0FGZ0Q7QUFHdERDLDZDQUE2QixlQUFLQyxRQUFMLENBQWNaLHFCQUFkLENBQTdCO0FBSHNELGFBQTlCLENBVmY7O0FBQUE7QUFBQTtBQVVIYSxtQkFWRyxTQVVIQSxPQVZHOztBQUFBLGdCQWVOQSxPQWZNO0FBQUE7QUFBQTtBQUFBOztBQUFBLGtCQWdCSCw4QkFoQkc7O0FBQUE7QUFrQlRaLG9CQUFRYSxLQUFSO0FBbEJTO0FBQUEsbUJBbUJILGtCQUFHQyxNQUFILENBQVVmLHFCQUFWLENBbkJHOztBQUFBO0FBdUJQZ0IsdUJBdkJPLElBdUJVZCxjQUFjLE9BQWQsR0FBd0IsSUF2QmxDLFdBdUIyQ0gsT0F2QjNDLFdBdUJ3REMscUJBdkJ4RDs7QUFBQSxpQkF3QlRHLFdBeEJTO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUEsbUJBeUJMLHlDQUFXYSxXQUFYLENBekJLOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsbUJBMkJMLG9CQUFLLHFCQUFLQyxJQUFWLEVBQWdCRCxXQUFoQixFQUE2QjtBQUNqQ04sb0JBQU07QUFEMkIsYUFBN0IsQ0EzQks7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsImZpbGUiOiJ1dGlsL21vdmUtYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCBpbnF1aXJlciBmcm9tICdpbnF1aXJlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBwaWZ5IGZyb20gJ3BpZnknO1xuaW1wb3J0IHN1ZG8gZnJvbSAnc3Vkby1wcm9tcHQnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyAoYXBwUGF0aCwgdGFyZ2V0QXBwbGljYXRpb25QYXRoLCBzcGlubmVyLCBjb3B5SW5zdGVhZCA9IGZhbHNlKSA9PiB7XG4gIGxldCB3cml0ZUFjY2VzcyA9IHRydWU7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMuYWNjZXNzKCcvQXBwbGljYXRpb25zJywgZnMuV19PSyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHdyaXRlQWNjZXNzID0gZmFsc2U7XG4gIH1cblxuICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyh0YXJnZXRBcHBsaWNhdGlvblBhdGgpKSB7XG4gICAgc3Bpbm5lci5zdG9wKCk7XG4gICAgY29uc3QgeyBjb25maXJtIH0gPSBhd2FpdCBpbnF1aXJlci5jcmVhdGVQcm9tcHRNb2R1bGUoKSh7XG4gICAgICB0eXBlOiAnY29uZmlybScsXG4gICAgICBuYW1lOiAnY29uZmlybScsXG4gICAgICBtZXNzYWdlOiBgVGhlIGFwcGxpY2F0aW9uIFwiJHtwYXRoLmJhc2VuYW1lKHRhcmdldEFwcGxpY2F0aW9uUGF0aCl9XCIgYXBwZWFycyB0byBhbHJlYWR5IGV4aXN0IGluIC9BcHBsaWNhdGlvbnMuIERvIHlvdSB3YW50IHRvIHJlcGxhY2UgaXQ/YCxcbiAgICB9KTtcbiAgICBpZiAoIWNvbmZpcm0pIHtcbiAgICAgIHRocm93ICdJbnN0YWxsYXRpb24gc3RvcHBlZCBieSB1c2VyJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3Bpbm5lci5zdGFydCgpO1xuICAgICAgYXdhaXQgZnMucmVtb3ZlKHRhcmdldEFwcGxpY2F0aW9uUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbW92ZUNvbW1hbmQgPSBgJHtjb3B5SW5zdGVhZCA/ICdjcCAtcicgOiAnbXYnfSBcIiR7YXBwUGF0aH1cIiBcIiR7dGFyZ2V0QXBwbGljYXRpb25QYXRofVwiYDtcbiAgaWYgKHdyaXRlQWNjZXNzKSB7XG4gICAgYXdhaXQgcGlmeShleGVjKShtb3ZlQ29tbWFuZCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgcGlmeShzdWRvLmV4ZWMpKG1vdmVDb21tYW5kLCB7XG4gICAgICBuYW1lOiAnRWxlY3Ryb24gRm9yZ2UnLFxuICAgIH0pO1xuICB9XG59O1xuIl19