@wpk-cli/cli
Version:
an unofficial CLI for webpack
124 lines (92 loc) • 4.09 kB
JavaScript
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);
}
;