refactor(ide): delegate detection to handlers (#680)

This commit is contained in:
Alex Verkhovsky
2025-10-05 20:13:11 -07:00
committed by GitHub
parent c9ffe202d5
commit b999dd1315
4 changed files with 54 additions and 33 deletions

View File

@@ -1,7 +1,6 @@
const fs = require('fs-extra');
const path = require('node:path');
const chalk = require('chalk');
const os = require('node:os');
/**
* IDE Manager - handles IDE-specific setup
@@ -166,38 +165,9 @@ class IdeManager {
async detectInstalledIdes(projectDir) {
const detected = [];
// Check for IDE-specific directories
const ideChecks = {
cursor: '.cursor',
'claude-code': '.claude',
windsurf: '.windsurf',
cline: '.clinerules',
roo: '.roomodes',
trae: '.trae',
kilo: '.kilocodemodes',
gemini: '.gemini',
qwen: '.qwen',
crush: '.crush',
iflow: '.iflow',
auggie: '.auggie',
'github-copilot': '.github/chatmodes',
vscode: '.vscode',
idea: '.idea',
};
for (const [ide, dir] of Object.entries(ideChecks)) {
const idePath = path.join(projectDir, dir);
if (await fs.pathExists(idePath)) {
detected.push(ide);
}
}
// Check Codex prompt directory for BMAD exports
const codexPromptDir = path.join(os.homedir(), '.codex', 'prompts');
if (await fs.pathExists(codexPromptDir)) {
const codexEntries = await fs.readdir(codexPromptDir);
if (codexEntries.some((file) => file.startsWith('bmad-'))) {
detected.push('codex');
for (const [name, handler] of this.handlers) {
if (typeof handler.detect === 'function' && (await handler.detect(projectDir))) {
detected.push(name);
}
}