src/lib/commands/helpers.js
import commandLineCommands from 'command-line-commands';
import {
commandsMap,
aliases,
defaultCommand,
availableCommandsList,
} from './constants';
/**
* Whether a given command is an alias
* @param {string} command
* @return {Boolean}
*/
export const isAlias = command => Object.keys(aliases).includes(command);
/**
* Get the command name of a given alias
* @param {string} alias
* @return {string}
*/
export const aliasToCommand = alias => aliases[alias];
/**
* Get the function of a given command
* @param {string} command command name
* @return {Function} command function
*/
export const commandToFunction = command => {
command = command || defaultCommand;
if (isAlias(command)) {
command = aliasToCommand(command);
}
return commandsMap[command];
};
/**
* Get the command and the arguments from the cli
* @return {Object}
* @property {string} command command name
* @property {string[]} argv command arguments
*/
export const getCommandAndArgvFromCli = () => {
const { command, argv } = commandLineCommands(availableCommandsList);
return { command, argv };
};
/**
* Run command
* @param {string} command command name
* @param {string} argv command arguments
*/
export const runCommand = (command, argv) => {
const commandFunction = commandToFunction(command);
return commandFunction(argv);
};