UNPKG

@wpk-cli/cli

Version:

an unofficial CLI for webpack

124 lines (92 loc) 4.09 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = findCommands; var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _logger = _interopRequireDefault(require("@wpk-cli/logger")); var _keys = _interopRequireDefault(require("lodash/keys")); var _startsWith = _interopRequireDefault(require("lodash/startsWith")); var _split = _interopRequireDefault(require("lodash/split")); var _requireLocalNodeModule = _interopRequireDefault(require("require-local-node-module")); var _requireGlobalNodeModule = _interopRequireDefault(require("require-global-node-module")); var _map = _interopRequireDefault(require("lodash/map")); var _isObject = _interopRequireDefault(require("lodash/isObject")); var _filter = _interopRequireDefault(require("lodash/filter")); var _get = _interopRequireDefault(require("lodash/get")); var _readPkgUp = _interopRequireDefault(require("read-pkg-up")); var _execa = _interopRequireDefault(require("execa")); var _utilities = require("@wpk-cli/utilities"); var _util = require("./util"); function findCommands() { return _findCommands.apply(this, arguments); } function _findCommands() { _findCommands = (0, _asyncToGenerator2.default)(function* () { const commands = []; try { // commands in local package.json const _userPkg$sync = _readPkgUp.default.sync(), pkg = _userPkg$sync.pkg, pkgPath = _userPkg$sync.path; if (pkg) { processDependencies((0, _keys.default)(pkg.dependencies), _requireLocalNodeModule.default, `in ${pkgPath}`); } // commands installed globally let globals = _execa.default.sync("npm list -g --depth 0"); globals = (0, _map.default)((0, _split.default)(globals, "\n"), pkg => (0, _get.default)(pkg.match(/[+`]--\s+(.+)@[0-9.]+/), 1)); globals = (0, _filter.default)(globals); processDependencies(globals, _requireGlobalNodeModule.default, "global package"); } catch (err) { /* istanbul ignore next */ if (process.argv.includes("--wpk-debug")) { (0, _utilities.printError)(err, "an error occurred trying to load commands", true); global.wpk.exit(1); return; } else { _logger.default.warn("an error occurred trying to load commands"); _logger.default.warn("run with --wpk-debug to see the error"); } } return commands; function processDependencies(dependencies, requireFn, where) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { const dep = _step.value; if ( (0, _startsWith.default)(dep, "wpk-command-") || (0, _startsWith.default)(dep, "@wpk-cli/command-")) { let command; try { command = requireFn(dep); // support transpiled import syntax command = (0, _get.default)(command, "default") || command; if (!(0, _isObject.default)(command)) { throw new Error("expecting command definition to be an object"); } command._location = dep; command._where = where; commands.push(command); } catch (err) { (0, _util.printCommandError)(err, command || dep, "load"); return; } } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } }); return _findCommands.apply(this, arguments); }