JezK
Edit File: run.js
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getBinEntries = getBinEntries; exports.hasWrapper = hasWrapper; exports.run = run; exports.setFlags = setFlags; function _taggedTemplateLiteral2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); _taggedTemplateLiteral2 = function _taggedTemplateLiteral2() { return data; }; return data; } function _regenerator() { var data = _interopRequireDefault(require("@babel/runtime/regenerator")); _regenerator = function _regenerator() { return data; }; return data; } function _toArray2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/toArray")); _toArray2 = function _toArray2() { return data; }; return data; } function _asyncToGenerator2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); _asyncToGenerator2 = function _asyncToGenerator2() { return data; }; return data; } function _slicedToArray2() { var data = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); _slicedToArray2 = function _slicedToArray2() { return data; }; return data; } function _executeLifecycleScript() { var data = require("../../util/execute-lifecycle-script.js"); _executeLifecycleScript = function _executeLifecycleScript() { return data; }; return data; } function _dynamicRequire() { var data = require("../../util/dynamic-require.js"); _dynamicRequire = function _dynamicRequire() { return data; }; return data; } function _hooks() { var data = require("../../util/hooks.js"); _hooks = function _hooks() { return data; }; return data; } function _errors() { var data = require("../../errors.js"); _errors = function _errors() { return data; }; return data; } function _packageCompatibility() { var data = require("../../package-compatibility.js"); _packageCompatibility = function _packageCompatibility() { return data; }; return data; } function fs() { var data = _interopRequireWildcard(require("../../util/fs.js")); fs = function fs() { return data; }; return data; } function constants() { var data = _interopRequireWildcard(require("../../constants.js")); constants = function constants() { return data; }; return data; } var _templateObject; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } var invariant = require('invariant'); var levenshtein = require('fast-levenshtein'); var path = require('path'); var _require = require('puka'), quoteForShell = _require.quoteForShell, sh = _require.sh, unquoted = _require.unquoted; function toObject(input) { var output = Object.create(null); var _iterator = _createForOfIteratorHelper(input.entries()), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var _step$value = (0, _slicedToArray2()["default"])(_step.value, 2), key = _step$value[0], val = _step$value[1]; output[key] = val; } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return output; } function getBinEntries(_x) { return _getBinEntries.apply(this, arguments); } function _getBinEntries() { _getBinEntries = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee(config) { var binFolders, binEntries, _iterator2, _step2, registryFolder, pnpApi, packageLocator, packageInformation, _iterator3, _step3, _step3$value, name, reference, dependencyInformation, _iterator4, _step4, binFolder, _iterator5, _step5, _name; return _regenerator()["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: binFolders = new Set(); binEntries = new Map(); // Setup the node_modules/.bin folders for analysis _iterator2 = _createForOfIteratorHelper(config.registryFolders); try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { registryFolder = _step2.value; binFolders.add(path.resolve(config.cwd, registryFolder, '.bin')); binFolders.add(path.resolve(config.lockfileFolder, registryFolder, '.bin')); } // Same thing, but for the pnp dependencies, located inside the cache } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } _context.next = 6; return fs().exists("".concat(config.lockfileFolder, "/").concat(constants().PNP_FILENAME)); case 6: if (!_context.sent) { _context.next = 12; break; } pnpApi = (0, _dynamicRequire().dynamicRequire)("".concat(config.lockfileFolder, "/").concat(constants().PNP_FILENAME)); packageLocator = pnpApi.findPackageLocator("".concat(config.cwd, "/")); packageInformation = pnpApi.getPackageInformation(packageLocator); _iterator3 = _createForOfIteratorHelper(packageInformation.packageDependencies.entries()); try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { _step3$value = (0, _slicedToArray2()["default"])(_step3.value, 2), name = _step3$value[0], reference = _step3$value[1]; dependencyInformation = pnpApi.getPackageInformation({ name: name, reference: reference }); if (dependencyInformation.packageLocation) { binFolders.add("".concat(dependencyInformation.packageLocation, "/.bin")); } } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } case 12: // Build up a list of possible scripts by exploring the folders marked for analysis _iterator4 = _createForOfIteratorHelper(binFolders); _context.prev = 13; _iterator4.s(); case 15: if ((_step4 = _iterator4.n()).done) { _context.next = 28; break; } binFolder = _step4.value; _context.next = 19; return fs().exists(binFolder); case 19: if (!_context.sent) { _context.next = 26; break; } _context.t0 = _createForOfIteratorHelper; _context.next = 23; return fs().readdir(binFolder); case 23: _context.t1 = _context.sent; _iterator5 = (0, _context.t0)(_context.t1); try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { _name = _step5.value; binEntries.set(_name, path.join(binFolder, _name)); } } catch (err) { _iterator5.e(err); } finally { _iterator5.f(); } case 26: _context.next = 15; break; case 28: _context.next = 33; break; case 30: _context.prev = 30; _context.t2 = _context["catch"](13); _iterator4.e(_context.t2); case 33: _context.prev = 33; _iterator4.f(); return _context.finish(33); case 36: return _context.abrupt("return", binEntries); case 37: case "end": return _context.stop(); } }, _callee, null, [[13, 30, 33, 36]]); })); return _getBinEntries.apply(this, arguments); } function setFlags(commander) { commander.description('Runs a defined package script.'); } function hasWrapper(commander, args) { return true; } function run(_x2, _x3, _x4, _x5, _x6) { return _run.apply(this, arguments); } function _run() { _run = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee3(config, reporter, commander, flags, args) { var pkg, binCommands, pkgCommands, scripts, _iterator6, _step6, _step6$value, _name2, loc, pkgScripts, _iterator7, _step7, name, runCommand, realRunCommand, _realRunCommand, printedCommands, _iterator8, _step8, pkgCommand, action; return _regenerator()["default"].wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: _realRunCommand = function _realRunCommand3() { _realRunCommand = (0, _asyncToGenerator2()["default"])( /*#__PURE__*/_regenerator()["default"].mark(function _callee2(action, args) { var cmds, preAction, script, postAction, _script, ignoreEngines, _iterator9, _step9, _step9$value, stage, cmd, cmdWithArgs, customShell, suggestion, _iterator10, _step10, commandName, steps, msg; return _regenerator()["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: // build up list of commands cmds = []; if (pkgScripts && action in pkgScripts) { preAction = "pre".concat(action); if (preAction in pkgScripts) { cmds.push([preAction, pkgScripts[preAction]]); } script = scripts.get(action); invariant(script, 'Script must exist'); cmds.push([action, script]); postAction = "post".concat(action); if (postAction in pkgScripts) { cmds.push([postAction, pkgScripts[postAction]]); } } else if (scripts.has(action)) { _script = scripts.get(action); invariant(_script, 'Script must exist'); cmds.push([action, _script]); } if (!cmds.length) { _context2.next = 34; break; } ignoreEngines = !!(flags.ignoreEngines || config.getOption('ignore-engines')); _context2.prev = 4; _context2.next = 7; return (0, _packageCompatibility().checkOne)(pkg, config, ignoreEngines); case 7: _context2.next = 12; break; case 9: _context2.prev = 9; _context2.t0 = _context2["catch"](4); throw _context2.t0 instanceof _errors().MessageError ? new (_errors().MessageError)(reporter.lang('cannotRunWithIncompatibleEnv')) : _context2.t0; case 12: // Disable wrapper in executed commands process.env.YARN_WRAP_OUTPUT = 'false'; _iterator9 = _createForOfIteratorHelper(cmds); _context2.prev = 14; _iterator9.s(); case 16: if ((_step9 = _iterator9.n()).done) { _context2.next = 24; break; } _step9$value = (0, _slicedToArray2()["default"])(_step9.value, 2), stage = _step9$value[0], cmd = _step9$value[1]; // only tack on trailing arguments for default script, ignore for pre and post - #1595 cmdWithArgs = stage === action ? sh(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2()["default"])(["", " ", ""])), unquoted(cmd), args) : cmd; customShell = config.getOption('script-shell'); _context2.next = 22; return (0, _executeLifecycleScript().execCommand)({ stage: stage, config: config, cmd: cmdWithArgs, cwd: flags.into || config.cwd, isInteractive: true, customShell: customShell ? String(customShell) : undefined }); case 22: _context2.next = 16; break; case 24: _context2.next = 29; break; case 26: _context2.prev = 26; _context2.t1 = _context2["catch"](14); _iterator9.e(_context2.t1); case 29: _context2.prev = 29; _iterator9.f(); return _context2.finish(29); case 32: _context2.next = 50; break; case 34: if (!(action === 'env')) { _context2.next = 45; break; } _context2.t2 = reporter; _context2.t3 = JSON; _context2.next = 39; return (0, _executeLifecycleScript().makeEnv)('env', config.cwd, config); case 39: _context2.t4 = _context2.sent; _context2.t5 = _context2.t3.stringify.call(_context2.t3, _context2.t4, null, 2); _context2.t6 = { force: true }; _context2.t2.log.call(_context2.t2, _context2.t5, _context2.t6); _context2.next = 50; break; case 45: _iterator10 = _createForOfIteratorHelper(scripts.keys()); try { for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { commandName = _step10.value; steps = levenshtein.get(commandName, action); if (steps < 2) { suggestion = commandName; } } } catch (err) { _iterator10.e(err); } finally { _iterator10.f(); } msg = "Command ".concat(JSON.stringify(action), " not found."); if (suggestion) { msg += " Did you mean ".concat(JSON.stringify(suggestion), "?"); } throw new (_errors().MessageError)(msg); case 50: case "end": return _context2.stop(); } }, _callee2, null, [[4, 9], [14, 26, 29, 32]]); })); return _realRunCommand.apply(this, arguments); }; realRunCommand = function _realRunCommand2(_x7, _x8) { return _realRunCommand.apply(this, arguments); }; runCommand = function _runCommand(_ref) { var _ref2 = (0, _toArray2()["default"])(_ref), action = _ref2[0], args = _ref2.slice(1); return (0, _hooks().callThroughHook)('runScript', function () { return realRunCommand(action, args); }, { action: action, args: args }); }; _context3.next = 5; return config.readManifest(config.cwd); case 5: pkg = _context3.sent; binCommands = new Set(); pkgCommands = new Set(); scripts = new Map(); _context3.t0 = _createForOfIteratorHelper; _context3.next = 12; return getBinEntries(config); case 12: _context3.t1 = _context3.sent; _iterator6 = (0, _context3.t0)(_context3.t1); try { for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { _step6$value = (0, _slicedToArray2()["default"])(_step6.value, 2), _name2 = _step6$value[0], loc = _step6$value[1]; scripts.set(_name2, quoteForShell(loc)); binCommands.add(_name2); } } catch (err) { _iterator6.e(err); } finally { _iterator6.f(); } pkgScripts = pkg.scripts; if (pkgScripts) { _iterator7 = _createForOfIteratorHelper(Object.keys(pkgScripts).sort()); try { for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { name = _step7.value; scripts.set(name, pkgScripts[name] || ''); pkgCommands.add(name); } } catch (err) { _iterator7.e(err); } finally { _iterator7.f(); } } if (!(args.length === 0)) { _context3.next = 34; break; } if (binCommands.size > 0) { reporter.info("".concat(reporter.lang('binCommands') + Array.from(binCommands).join(', '))); } else { reporter.error(reporter.lang('noBinAvailable')); } printedCommands = new Map(); _iterator8 = _createForOfIteratorHelper(pkgCommands); try { for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { pkgCommand = _step8.value; action = scripts.get(pkgCommand); invariant(action, 'Action must exists'); printedCommands.set(pkgCommand, action); } } catch (err) { _iterator8.e(err); } finally { _iterator8.f(); } if (!(pkgCommands.size > 0)) { _context3.next = 30; break; } reporter.info("".concat(reporter.lang('possibleCommands'))); reporter.list('possibleCommands', Array.from(pkgCommands), toObject(printedCommands)); if (flags.nonInteractive) { _context3.next = 28; break; } _context3.next = 28; return reporter.question(reporter.lang('commandQuestion')).then(function (answer) { return runCommand(answer.trim().split(' ')); }, function () { return reporter.error(reporter.lang('commandNotSpecified')); }); case 28: _context3.next = 31; break; case 30: reporter.error(reporter.lang('noScriptsAvailable')); case 31: return _context3.abrupt("return", Promise.resolve()); case 34: return _context3.abrupt("return", runCommand(args)); case 35: case "end": return _context3.stop(); } }, _callee3); })); return _run.apply(this, arguments); } //# sourceMappingURL=run.js.map