move confirmation to /src/ui/confirm.js

This commit is contained in:
Joe Danziger
2025-05-22 15:47:52 -04:00
parent 1b92d5803a
commit ead4aa4a2d
3 changed files with 38 additions and 32 deletions

View File

@@ -65,6 +65,7 @@ import {
displayApiKeyStatus, displayApiKeyStatus,
displayAiUsageSummary displayAiUsageSummary
} from './ui.js'; } from './ui.js';
import { confirmRulesRemove } from '../../src/ui/confirm.js';
import { initializeProject } from '../init.js'; import { initializeProject } from '../init.js';
import { import {
@@ -2438,7 +2439,7 @@ Examples:
let confirmed = true; let confirmed = true;
if (!options.force) { if (!options.force) {
const ui = await import('./ui.js'); const ui = await import('./ui.js');
confirmed = await ui.confirmRulesRemove(expandedBrands); confirmed = await confirmRulesRemove(expandedBrands);
} }
if (!confirmed) { if (!confirmed) {
console.log(chalk.yellow('Aborted: No rules were removed.')); console.log(chalk.yellow('Aborted: No rules were removed.'));

View File

@@ -1769,35 +1769,7 @@ IMPORTANT: Make sure to include an analysis for EVERY task listed above, with th
`; `;
} }
/**
* Confirm removing brand rules (destructive operation)
* @param {string[]} brands - Array of brand names to remove
* @returns {Promise<boolean>} - Promise resolving to true if user confirms, false otherwise
*/
async function confirmRulesRemove(brands) {
const brandList = brands
.map((b) => b.charAt(0).toUpperCase() + b.slice(1))
.join(', ');
console.log(
boxen(
chalk.yellow(
`WARNING: This will permanently delete all rules and configuration for: ${brandList}.
This will remove the entire .[brand] directory for each selected brand.\n\nAre you sure you want to proceed?`
),
{ padding: 1, borderColor: 'yellow', borderStyle: 'round' }
)
);
const inquirer = await import('inquirer');
const { confirm } = await inquirer.default.prompt([
{
type: 'confirm',
name: 'confirm',
message: 'Type y to confirm, or n to abort:',
default: false
}
]);
return confirm;
}
/** /**
* Confirm overwriting existing tasks.json file * Confirm overwriting existing tasks.json file
@@ -2111,6 +2083,5 @@ export {
displayApiKeyStatus, displayApiKeyStatus,
displayModelConfiguration, displayModelConfiguration,
displayAvailableModels, displayAvailableModels,
displayAiUsageSummary, displayAiUsageSummary
confirmRulesRemove
}; };

34
src/ui/confirm.js Normal file
View File

@@ -0,0 +1,34 @@
import chalk from 'chalk';
import boxen from 'boxen';
/**
* Confirm removing brand rules (destructive operation)
* @param {string[]} brands - Array of brand names to remove
* @returns {Promise<boolean>} - Promise resolving to true if user confirms, false otherwise
*/
async function confirmRulesRemove(brands) {
const brandList = brands
.map((b) => b.charAt(0).toUpperCase() + b.slice(1))
.join(', ');
console.log(
boxen(
chalk.yellow(
`WARNING: This will permanently delete all rules and configuration for: ${brandList}.
This will remove the entire .[brand] directory for each selected brand.\n\nAre you sure you want to proceed?`
),
{ padding: 1, borderColor: 'yellow', borderStyle: 'round' }
)
);
const inquirer = await import('inquirer');
const { confirm } = await inquirer.default.prompt([
{
type: 'confirm',
name: 'confirm',
message: 'Type y to confirm, or n to abort:',
default: false
}
]);
return confirm;
}
export { confirmRulesRemove };