UNPKG

baldrick-broth

Version:
56 lines (55 loc) 2.29 kB
import { coloration } from './coloration.js'; import { createTaskAction } from './create-task-action.js'; import { version } from './version.js'; const createTaskDescription = (task) => { const descriptions = [task.description ? task.description : task.title]; if (task.motivation !== undefined) { descriptions.push('\n' + coloration.motivation(`Motivation: ${task.motivation}`)); } return descriptions.join('\n'); }; export const createCommands = (program, buildModelValidation) => { program .name('baldrick-broth') .description('CLI for build automation and running tasks') .version(version); if (buildModelValidation.status === 'success') { const { value, value: { workflows }, } = buildModelValidation; for (const workflowKey in workflows) { const workflow = workflows[workflowKey]; if (workflow === undefined) { continue; } const workflowCmd = program.command(workflowKey); workflowCmd.summary(workflow.title); if (workflow.description !== undefined) { workflowCmd.description(workflow.description); } for (const taskId in workflow.tasks) { const task = workflow.tasks[taskId]; if (task === undefined) { continue; } const taskCommand = workflowCmd.command(taskId); taskCommand.summary(task.title); task.main.name = 'main'; if (task.before) { task.before.name = 'before'; } if (task.after) { task.after.name = 'after'; } taskCommand.description(createTaskDescription(task)); taskCommand.action(createTaskAction({ build: value, task: { ...task, name: `${workflowKey}::${taskId}` }, })); if (task.parameters !== undefined) { for (const parameter of task.parameters) { taskCommand.option(parameter.flags, parameter.description, parameter.default); } } } } } };