1import * as _ from 'lodash-es' 5 cliOptA?: string[] | (() => string[]) 10 cliSupportsEpScopes?: boolean 11 options?: Record<string, string> 15export const formatScopedCliDescript = ({actionName, cliDescript, examplePath}: {actionName: string, cliDescript: CliDescriptObj, examplePath?: string}) => { 16 const explainStr = cliDescript.cliExplain || '' 17 const cleanExplain = explainStr.replace(/\u001b\[\d+m/g, '') 18 return cleanExplain || `run ${actionName} on entrypoints` 21const resolveCliOptA = (cliOptA: string[] | (() => string[]) | undefined) => _.isFunction(cliOptA) ? cliOptA() : cliOptA 23export const formatCliDescript = (cliDescript: string | CliDescriptObj | (() => string | CliDescriptObj) | undefined, actionName: string, examplePath?: string): string | CliDescriptObj | null => { 24 if (!cliDescript) return null 25 if (_.isFunction(cliDescript)) cliDescript = cliDescript() 27 if (!_.isObject(cliDescript)) return cliDescript as string 28 if (!cliDescript.cliOptA && !cliDescript.options) return cliDescript.cliExplain ?? cliDescript 30 if (cliDescript.cliSupportsEpScopes) { 31 return formatScopedCliDescript({actionName, cliDescript, examplePath}) 34 if (cliDescript.cliFmt === 'compact') { 35 const parts = _.map(resolveCliOptA(cliDescript.cliOptA), (optName: string) => 36 optName === cliDescript.cliDefaultOpt 37 ? `${actionName}[:${optName}] (default)` 38 : `${actionName}:${optName}` 40 const argsStr = (cliDescript as CliDescriptObj).cliArgs ? ` ${(cliDescript as CliDescriptObj).cliArgs}` : '' 41 const cliComment = (cliDescript as CliDescriptObj).cliCmt ? ` # ${(cliDescript as CliDescriptObj).cliCmt}` : '' 42 return `${parts.join(' ')}${argsStr}${cliComment}` 45 if (cliDescript.description) { 46 const optStrs = _.map(cliDescript.options, (desc: string, name: string) => `${actionName}:${name} (${desc})`) 47 return `${cliDescript.description}. Options: ${optStrs.join(', ')}`