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