UNPKG

@wpk-cli/cli

Version:

an unofficial CLI for webpack

185 lines (131 loc) 5.79 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.tryCommandAlias = tryCommandAlias; exports.tryCommandDownload = tryCommandDownload; exports.handleUnknownCommand = handleUnknownCommand; exports.run = run; var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _includes = _interopRequireDefault(require("lodash/includes")); var _slice = _interopRequireDefault(require("lodash/slice")); var _split = _interopRequireDefault(require("lodash/split")); var _concat = _interopRequireDefault(require("lodash/concat")); var _forEach = _interopRequireDefault(require("lodash/forEach")); var _logger = _interopRequireDefault(require("@wpk-cli/logger")); var _commander = _interopRequireDefault(require("commander")); var _user = _interopRequireDefault(require("@wpk-cli/user")); var _execa = _interopRequireDefault(require("execa")); var _utilities = require("@wpk-cli/utilities"); var _commandAdd = _interopRequireDefault(require("@wpk-cli/command-add")); var _commandAlias = _interopRequireDefault(require("@wpk-cli/command-alias")); var _commandAnalyse = _interopRequireDefault(require("@wpk-cli/command-analyse")); var _commandGet = _interopRequireDefault(require("@wpk-cli/command-get")); var _commandBuild = _interopRequireDefault(require("@wpk-cli/command-build")); var _commandInfo = _interopRequireDefault(require("@wpk-cli/command-info")); var _commandInit = _interopRequireDefault(require("@wpk-cli/command-init")); var _commandOpts = _interopRequireDefault(require("@wpk-cli/command-opts")); var _commandSet = _interopRequireDefault(require("@wpk-cli/command-set")); var _commandValidate = _interopRequireDefault(require("@wpk-cli/command-validate")); var _commandServe = _interopRequireDefault(require("@wpk-cli/command-serve")); var _package = _interopRequireDefault(require("../package.json")); var _commandFind = _interopRequireDefault(require("./command-find")); var _commandInstall = _interopRequireDefault(require("./command-install")); var _commandDownload = _interopRequireDefault(require("./command-download")); var _commandMaybe = _interopRequireDefault(require("./command-maybe")); var _commands = require("./commands"); var _util = require("./util"); (0, _util.enhanceCommander)(_commander.default); const nativeCommands = [_commandAdd.default, _commandAlias.default, _commandAnalyse.default, _commandGet.default, _commandInfo.default, _commandInit.default, _commandBuild.default, _commandOpts.default, _commandSet.default, _commandServe.default, _commandValidate.default]; /** * Look up `command` as an alias in the global user config and run if found. * @param command {String} command name * @returns {Boolean} */ function tryCommandAlias(command) { if (_user.default.has(`alias.${command}`)) { const alias = (0, _split.default)(_user.default.get(`alias.${command}`), /\s+/g); const cliArgs = (0, _slice.default)(process.argv, 1); const args = (0, _concat.default)(require.main.filename, (0, _slice.default)(alias, 1), cliArgs); (0, _execa.default)("node", args, { stdio: "inherit" }); return true; } return false; } /** * Attempt to download a wpk plug-in command. * @param command {String} command name * @returns {Promise<Boolean>} */ function tryCommandDownload(_x) { return _tryCommandDownload.apply(this, arguments); } /** * Handle an unknown command name. * @param commands {Array} array of installed commands * @param command {String} the unknown command name * @returns {Promise<void>} */ function _tryCommandDownload() { _tryCommandDownload = (0, _asyncToGenerator2.default)(function* (command) { let pkg; if ((0, _includes.default)(_commands.nativeCommandNames, command)) { pkg = `@wpk-cli/command-${command}`; } else if (yield (0, _utilities.checkPackageExists)(`wpk-command-${command}`)) { pkg = `wpk-command-${command}`; } if (pkg) { _logger.default.info(`command "${command}" is not installed`); yield (0, _commandDownload.default)(pkg); return true; } return false; }); return _tryCommandDownload.apply(this, arguments); } function handleUnknownCommand(_x2, _x3) { return _handleUnknownCommand.apply(this, arguments); } /** Run the wpk CLI. */ function _handleUnknownCommand() { _handleUnknownCommand = (0, _asyncToGenerator2.default)(function* (commands, command) { // prettier-ignore const fns = [tryCommandAlias, _commandMaybe.default, tryCommandDownload]; for (var _i = 0; _i < fns.length; _i++) { const tryFn = fns[_i]; if (yield tryFn(command, commands)) { return; } } _logger.default.error(`unknown command "${command}"`); _commander.default.help(); }); return _handleUnknownCommand.apply(this, arguments); } function run() { return _run.apply(this, arguments); } function _run() { _run = (0, _asyncToGenerator2.default)(function* () { const commands = (0, _concat.default)(nativeCommands, (yield (0, _commandFind.default)())); (0, _forEach.default)(commands, command => { (0, _commandInstall.default)(_commander.default, command); }); (0, _util.applyUserConfigOptions)(); _commander.default.on("command:*", /*#__PURE__*/ /*istanbul ignore next */ function () { var _ref = (0, _asyncToGenerator2.default)(function* ([command]) { yield handleUnknownCommand(commands, command); }); return function (_x4) { return _ref.apply(this, arguments); }; }()).version(_package.default.version).parse(process.argv); }); return _run.apply(this, arguments); }