electron-forge
Version:
A complete tool for building modern Electron applications
148 lines (111 loc) • 8.62 kB
JavaScript
;
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 _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _yarnOrNpm = require('../util/yarn-or-npm');
var _oraHandler = require('../util/ora-handler');
var _oraHandler2 = _interopRequireDefault(_oraHandler);
var _resolveDir = require('../util/resolve-dir');
var _resolveDir2 = _interopRequireDefault(_resolveDir);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var d = (0, _debug2.default)('electron-forge:lint');
/**
* @typedef {Object} LintOptions
* @property {string} [dir=process.cwd()] The path to the module to import
* @property {boolean} [interactive=false] Whether to use sensible defaults or prompt the user visually
*/
/**
* Lint a local Electron application.
*
* The promise will be rejected with the stdout+stderr of the linting process if linting fails or
* will be resolved if it succeeds.
*
* @param {LintOptions} providedOptions - Options for the Lint method
* @return {Promise<null, string>} Will resolve when the lint process is complete
*/
exports.default = function () {
var _ref = (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee2() {
var providedOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _Object$assign, dir, interactive, success, result;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
// eslint-disable-next-line prefer-const, no-unused-vars
_Object$assign = (0, _assign2.default)({
dir: process.cwd(),
interactive: false
}, providedOptions), dir = _Object$assign.dir, interactive = _Object$assign.interactive;
_oraHandler2.default.interactive = interactive;
success = true;
result = null;
_context2.next = 6;
return (0, _oraHandler2.default)('Linting Application', function () {
var _ref2 = (0, _bluebird.coroutine)(_regenerator2.default.mark(function _callee(lintSpinner) {
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 lintable Electron application';
case 5:
d('executing "run lint -- --color" in dir:', dir);
_context.prev = 6;
_context.next = 9;
return (0, _yarnOrNpm.yarnOrNpmSpawn)(['run', 'lint', '--', '--color'], {
stdio: process.platform === 'win32' ? 'inherit' : 'pipe',
cwd: dir
});
case 9:
_context.next = 16;
break;
case 11:
_context.prev = 11;
_context.t0 = _context['catch'](6);
lintSpinner.fail();
success = false;
result = _context.t0;
case 16:
case 'end':
return _context.stop();
}
}
}, _callee, undefined, [[6, 11]]);
}));
return function (_x2) {
return _ref2.apply(this, arguments);
};
}());
case 6:
if (success) {
_context2.next = 8;
break;
}
throw result;
case 8:
case 'end':
return _context2.stop();
}
}
}, _callee2, undefined);
}));
return function () {
return _ref.apply(this, arguments);
};
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9saW50LmpzIl0sIm5hbWVzIjpbImQiLCJwcm92aWRlZE9wdGlvbnMiLCJkaXIiLCJwcm9jZXNzIiwiY3dkIiwiaW50ZXJhY3RpdmUiLCJzdWNjZXNzIiwicmVzdWx0IiwibGludFNwaW5uZXIiLCJzdGRpbyIsInBsYXRmb3JtIiwiZmFpbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOzs7O0FBQ0E7O0FBRUE7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsSUFBSSxxQkFBTSxxQkFBTixDQUFWOztBQUVBOzs7Ozs7QUFNQTs7Ozs7Ozs7Ozs7aUVBU2U7QUFBQSxRQUFPQyxlQUFQLHVFQUF5QixFQUF6Qjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNiO0FBRGEsNkJBRWMsc0JBQWM7QUFDdkNDLG1CQUFLQyxRQUFRQyxHQUFSLEVBRGtDO0FBRXZDQywyQkFBYTtBQUYwQixhQUFkLEVBR3hCSixlQUh3QixDQUZkLEVBRVBDLEdBRk8sa0JBRVBBLEdBRk8sRUFFRkcsV0FGRSxrQkFFRkEsV0FGRTs7QUFNYixpQ0FBU0EsV0FBVCxHQUF1QkEsV0FBdkI7O0FBRUlDLG1CQVJTLEdBUUMsSUFSRDtBQVNUQyxrQkFUUyxHQVNBLElBVEE7QUFBQTtBQUFBLG1CQVdQLDBCQUFTLHFCQUFUO0FBQUEsOEVBQWdDLGlCQUFPQyxXQUFQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLCtCQUN4QiwwQkFBV04sR0FBWCxDQUR3Qjs7QUFBQTtBQUNwQ0EsMkJBRG9DOztBQUFBLDRCQUUvQkEsR0FGK0I7QUFBQTtBQUFBO0FBQUE7O0FBQUEsOEJBRzVCLGdEQUg0Qjs7QUFBQTs7QUFNcENGLDBCQUFFLHlDQUFGLEVBQTZDRSxHQUE3QztBQU5vQztBQUFBO0FBQUEsK0JBUTVCLCtCQUFlLENBQUMsS0FBRCxFQUFRLE1BQVIsRUFBZ0IsSUFBaEIsRUFBc0IsU0FBdEIsQ0FBZixFQUFpRDtBQUNyRE8saUNBQU9OLFFBQVFPLFFBQVIsS0FBcUIsT0FBckIsR0FBK0IsU0FBL0IsR0FBMkMsTUFERztBQUVyRE4sK0JBQUtGO0FBRmdELHlCQUFqRCxDQVI0Qjs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQWFsQ00sb0NBQVlHLElBQVo7QUFDQUwsa0NBQVUsS0FBVjtBQUNBQzs7QUFma0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBaEM7O0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBWE87O0FBQUE7QUFBQSxnQkE4QlJELE9BOUJRO0FBQUE7QUFBQTtBQUFBOztBQUFBLGtCQStCTEMsTUEvQks7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsImZpbGUiOiJhcGkvbGludC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnY29sb3JzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyB5YXJuT3JOcG1TcGF3biB9IGZyb20gJy4uL3V0aWwveWFybi1vci1ucG0nO1xuXG5pbXBvcnQgYXN5bmNPcmEgZnJvbSAnLi4vdXRpbC9vcmEtaGFuZGxlcic7XG5pbXBvcnQgcmVzb2x2ZURpciBmcm9tICcuLi91dGlsL3Jlc29sdmUtZGlyJztcblxuY29uc3QgZCA9IGRlYnVnKCdlbGVjdHJvbi1mb3JnZTpsaW50Jyk7XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTGludE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGlyPXByb2Nlc3MuY3dkKCldIFRoZSBwYXRoIHRvIHRoZSBtb2R1bGUgdG8gaW1wb3J0XG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtpbnRlcmFjdGl2ZT1mYWxzZV0gV2hldGhlciB0byB1c2Ugc2Vuc2libGUgZGVmYXVsdHMgb3IgcHJvbXB0IHRoZSB1c2VyIHZpc3VhbGx5XG4gKi9cblxuLyoqXG4gKiBMaW50IGEgbG9jYWwgRWxlY3Ryb24gYXBwbGljYXRpb24uXG4gKlxuICogVGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCB3aXRoIHRoZSBzdGRvdXQrc3RkZXJyIG9mIHRoZSBsaW50aW5nIHByb2Nlc3MgaWYgbGludGluZyBmYWlscyBvclxuICogd2lsbCBiZSByZXNvbHZlZCBpZiBpdCBzdWNjZWVkcy5cbiAqXG4gKiBAcGFyYW0ge0xpbnRPcHRpb25zfSBwcm92aWRlZE9wdGlvbnMgLSBPcHRpb25zIGZvciB0aGUgTGludCBtZXRob2RcbiAqIEByZXR1cm4ge1Byb21pc2U8bnVsbCwgc3RyaW5nPn0gV2lsbCByZXNvbHZlIHdoZW4gdGhlIGxpbnQgcHJvY2VzcyBpcyBjb21wbGV0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyAocHJvdmlkZWRPcHRpb25zID0ge30pID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdCwgbm8tdW51c2VkLXZhcnNcbiAgbGV0IHsgZGlyLCBpbnRlcmFjdGl2ZSB9ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgZGlyOiBwcm9jZXNzLmN3ZCgpLFxuICAgIGludGVyYWN0aXZlOiBmYWxzZSxcbiAgfSwgcHJvdmlkZWRPcHRpb25zKTtcbiAgYXN5bmNPcmEuaW50ZXJhY3RpdmUgPSBpbnRlcmFjdGl2ZTtcblxuICBsZXQgc3VjY2VzcyA9IHRydWU7XG4gIGxldCByZXN1bHQgPSBudWxsO1xuXG4gIGF3YWl0IGFzeW5jT3JhKCdMaW50aW5nIEFwcGxpY2F0aW9uJywgYXN5bmMgKGxpbnRTcGlubmVyKSA9PiB7XG4gICAgZGlyID0gYXdhaXQgcmVzb2x2ZURpcihkaXIpO1xuICAgIGlmICghZGlyKSB7XG4gICAgICB0aHJvdyAnRmFpbGVkIHRvIGxvY2F0ZSBsaW50YWJsZSBFbGVjdHJvbiBhcHBsaWNhdGlvbic7XG4gICAgfVxuXG4gICAgZCgnZXhlY3V0aW5nIFwicnVuIGxpbnQgLS0gLS1jb2xvclwiIGluIGRpcjonLCBkaXIpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB5YXJuT3JOcG1TcGF3bihbJ3J1bicsICdsaW50JywgJy0tJywgJy0tY29sb3InXSwge1xuICAgICAgICBzdGRpbzogcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/ICdpbmhlcml0JyA6ICdwaXBlJyxcbiAgICAgICAgY3dkOiBkaXIsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxpbnRTcGlubmVyLmZhaWwoKTtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgIHJlc3VsdCA9IGVycjtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICghc3VjY2Vzcykge1xuICAgIHRocm93IHJlc3VsdDtcbiAgfVxufTtcbiJdfQ==