add confirmation for rules removal

This commit is contained in:
Joe Danziger
2025-05-11 16:09:42 -04:00
parent a949fe627d
commit 42a1484028
2 changed files with 43 additions and 1 deletions

View File

@@ -519,6 +519,17 @@ function registerCommands(programInstance) {
.flatMap((b) => b.split(',').map((s) => s.trim()))
.filter(Boolean);
if (action === 'remove') {
const ui = await import('./ui.js');
const confirmed = await ui.confirmRulesRemove(expandedBrands);
if (!confirmed) {
console.log(chalk.yellow('Aborted: No rules were removed.'));
return;
}
}
// (removed duplicate projectDir, brands check, and expandedBrands parsing)
const removalResults = [];
for (const brand of expandedBrands) {

View File

@@ -1725,6 +1725,36 @@ 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
* @param {string} tasksPath - Path to the tasks.json file
@@ -1991,5 +2021,6 @@ export {
confirmTaskOverwrite,
displayApiKeyStatus,
displayModelConfiguration,
displayAvailableModels
displayAvailableModels,
confirmRulesRemove
};