UNPKG

@mondaycom/apps-cli

Version:

A cli tool to manage apps (and monday-code projects) in monday.com

52 lines (51 loc) 2.02 kB
import { wrapInBox } from './cli-utils.js'; import logger from './logger.js'; let printCommandEnabled = false; export const enablePrintCommand = () => { printCommandEnabled = true; }; const getFlagsAndArgsFromCommand = (command) => { const commandClass = command.constructor; const commandFlags = commandClass.flags; const commandArgs = commandClass.args; return { flags: commandFlags, args: commandArgs, }; }; const addFlagsToCommandString = (commandString, commandFlagsMetadata, flags) => { for (const [flagName, flag] of Object.entries(commandFlagsMetadata)) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const flagValue = flags?.[flagName]; if (flagValue) { const flagChar = flag?.char; commandString += ` -${flagChar ? flagChar : `-${flagName}`}=${flagValue}`; } } return commandString; }; const addArgsToCommandString = (commandString, commandArgsMetadata, args) => { // eslint-disable-next-line @typescript-eslint/no-unused-vars for (const [argName, _arg] of Object.entries(commandArgsMetadata)) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const argValue = args?.[argName]; if (argValue) { commandString += ` ${argValue}`; } } return commandString; }; export const printGeneratedCommand = (command, flags, args) => { if (!printCommandEnabled) { return; } const cliAlias = command.config.pjson.oclif.bin; const commandId = command.id; const { flags: commandFlagsMetadata, args: commandArgsMetadata } = getFlagsAndArgsFromCommand(command); let commandString = `$ ${cliAlias} ${commandId}`; commandString = addFlagsToCommandString(commandString, commandFlagsMetadata, flags); commandString = addArgsToCommandString(commandString, commandArgsMetadata, args); logger.info(` Use the following command for the same results: ${wrapInBox(commandString)}`); };