import { getProjectPath, getProjectNotificationDisplayConfigs, getProjectOutput, loadVariables, } from '../../../helpers/cluserHelper'; import fs from 'fs'; import path from 'path'; import { parse, stringify } from 'yaml'; import chalk from 'chalk'; import { globSync } from 'glob'; import inquirer from 'inquirer'; import { getTask, getTaskColumn, } from '../../../helpers/profileGeneratorHelper'; export async function configureTaskDetailsCommandHandler({ id, }: { id: string; }) { if (!id) { console.log(chalk.red('Task Id is required')); return; } var variables = loadVariables(); var taskIdVariable = id; for (const variableKey in variables) { if (variables[variableKey] === id) { taskIdVariable = variableKey; break; } } if (!taskIdVariable) { console.log(chalk.red('Task Id is required')); return; } var taskObj = getTask(taskIdVariable); if (!taskObj) { console.log(chalk.red(`Task with id ${taskIdVariable} not found`)); return; } var columns = getTaskColumn(taskObj); if (columns.length === 0) { console.log( chalk.red(`No columns found for table with id ${taskIdVariable}`), ); } // use inquire to show multiple choices for columns, the column list should shows 3 columns at a time const answers = await inquirer.prompt([ { type: 'checkbox', name: 'selectedColumns', message: 'Select columns to display in notification:', choices: columns.map((col, index) => ({ name: col.name, value: col.name, short: col.name, checked: col.visibility === 1 || col.visibility === 'Visible', })), }, ]); var notificationDisplayConfigs = getProjectNotificationDisplayConfigs() || {}; notificationDisplayConfigs[taskIdVariable] = answers.selectedColumns; var projectPath = getProjectPath(); fs.writeFileSync( path.join(projectPath, '..', '__configs/notification-displays.yaml'), stringify(notificationDisplayConfigs, { keepSourceTokens: true, lineWidth: 0, }), ); }