woaru
Version:
Universal Project Setup Autopilot - Analyze and automatically configure development tools for ANY programming language
287 lines • 8.98 kB
JavaScript
import { t } from '../config/i18n.js';
/**
* Command mapping for i18n translation keys
*/
export const COMMAND_I18N_KEYS = {
// Main commands
'quick-analyze': {
description: 'commands.quick_analyze.description',
purpose: 'commands.quick_analyze.purpose',
},
setup: {
description: 'commands.setup.description',
purpose: 'commands.setup.purpose',
},
tools: {
description: 'commands.setup_tools.description',
purpose: 'commands.setup_tools.purpose',
},
ai: {
description: 'commands.ai.description',
purpose: 'commands.ai.purpose',
},
'ai setup': {
description: 'commands.ai_setup.description',
purpose: 'commands.ai_setup.purpose',
},
'ai (legacy)': {
description: 'commands.ai_legacy.description',
purpose: 'commands.ai_legacy.purpose',
},
llm: {
description: 'commands.llm.description',
purpose: 'commands.llm.purpose',
},
'update-db': {
description: 'commands.update_db.description',
purpose: 'commands.update_db.purpose',
},
watch: {
description: 'commands.watch.description',
purpose: 'commands.watch.purpose',
},
status: {
description: 'commands.status.description',
purpose: 'commands.status.purpose',
},
update: {
description: 'commands.update.description',
purpose: 'commands.update.purpose',
},
stop: {
description: 'commands.stop.description',
purpose: 'commands.stop.purpose',
},
logs: {
description: 'commands.logs.description',
purpose: 'commands.logs.purpose',
},
recommendations: {
description: 'commands.recommendations.description',
purpose: 'commands.recommendations.purpose',
},
helpers: {
description: 'commands.helpers.description',
purpose: 'commands.helpers.purpose',
},
// Documentation commands
docu: {
description: 'commands.docu.description',
purpose: 'commands.docu.purpose',
},
'docu nopro': {
description: 'commands.docu_nopro.description',
purpose: 'commands.docu_nopro.purpose',
},
'docu pro': {
description: 'commands.docu_pro.description',
purpose: 'commands.docu_pro.purpose',
},
'docu forai': {
description: 'commands.docu_ai.description',
purpose: 'commands.docu_ai.purpose',
},
ignore: {
description: 'commands.ignore.description',
purpose: 'commands.ignore.purpose',
},
// Review commands
review: {
description: 'commands.review.description',
purpose: 'commands.review.purpose',
},
'review ai': {
description: 'commands.review_ai.description',
purpose: 'commands.review_ai.purpose',
},
'review git': {
description: 'commands.review_git.description',
purpose: 'commands.review_git.purpose',
},
'review ai git': {
description: 'commands.review_git_ai.description',
purpose: 'commands.review_git_ai.purpose',
},
'review local': {
description: 'commands.review_local.description',
purpose: 'commands.review_local.purpose',
},
'review local git': {
description: 'commands.review_local_git.description',
purpose: 'commands.review_local_git.purpose',
},
'review ai local': {
description: 'commands.review_local_ai.description',
purpose: 'commands.review_local_ai.purpose',
},
'review path': {
description: 'commands.review_path.description',
purpose: 'commands.review_path.purpose',
},
'review ai path': {
description: 'commands.review_path_ai.description',
purpose: 'commands.review_path_ai.purpose',
},
// Analysis commands
analyze: {
description: 'commands.analyze.description',
purpose: 'commands.analyze.purpose',
},
'analyze ai': {
description: 'commands.analyze_ai.description',
purpose: 'commands.analyze_ai.purpose',
},
rollback: {
description: 'commands.rollback.description',
purpose: 'commands.rollback.purpose',
},
commands: {
description: 'commands.commands.description',
purpose: 'commands.commands.purpose',
},
wiki: {
description: 'commands.wiki.description',
purpose: 'commands.wiki.purpose',
},
// Message commands
message: {
description: 'commands.message.description',
purpose: 'commands.message.purpose',
},
'message all': {
description: 'commands.message_all.description',
purpose: 'commands.message_all.purpose',
},
'message latest': {
description: 'commands.message_latest.description',
purpose: 'commands.message_latest.purpose',
},
// Logs commands
'logs main': {
description: 'commands.logs_main.description',
purpose: 'commands.logs_main.purpose',
},
'logs clear': {
description: 'commands.logs_clear.description',
purpose: 'commands.logs_clear.purpose',
},
'logs stats': {
description: 'commands.logs_stats.description',
purpose: 'commands.logs_stats.purpose',
},
// Version & config commands
version: {
description: 'commands.version.description',
purpose: 'commands.version.purpose',
},
check: {
description: 'commands.check.description',
purpose: 'commands.check.purpose',
},
'update main': {
description: 'commands.update_main.description',
purpose: 'commands.update_main.purpose',
},
config: {
description: 'commands.config.description',
purpose: 'commands.config.purpose',
},
language: {
description: 'commands.language.description',
purpose: 'commands.language.purpose',
},
};
/**
* Get all commands from the program recursively
*/
export function getAllCommands(program) {
const commands = [];
function collectCommands(cmd) {
commands.push(cmd);
// Get subcommands
if (cmd.commands && cmd.commands.length > 0) {
cmd.commands.forEach(subCmd => {
collectCommands(subCmd);
});
}
}
collectCommands(program);
return commands;
}
/**
* Get the command path (e.g., "review git" for nested commands)
*/
export function getCommandPath(cmd) {
const parts = [];
let current = cmd;
while (current && current.name()) {
parts.unshift(current.name());
current = current.parent;
}
// Remove root program name if it exists
if (parts.length > 1 && parts[0] === 'woaru') {
parts.shift();
}
return parts.join(' ');
}
/**
* Get translated description for a command
*/
export function getTranslatedDescription(cmd) {
const commandPath = getCommandPath(cmd);
const i18nKeys = COMMAND_I18N_KEYS[commandPath];
if (i18nKeys && i18nKeys.description) {
return t(i18nKeys.description);
}
// Fallback to original description
return cmd.description() || '';
}
/**
* Get translated purpose for a command
*/
export function getTranslatedPurpose(cmd) {
const commandPath = getCommandPath(cmd);
const i18nKeys = COMMAND_I18N_KEYS[commandPath];
if (i18nKeys && i18nKeys.purpose) {
return t(i18nKeys.purpose);
}
return '';
}
/**
* Generate translated commands output
*/
export function generateTranslatedCommandsOutput(program) {
const commands = getAllCommands(program);
const mainCommands = commands.filter(cmd => cmd.parent === program && cmd.name() !== 'help');
let output = '';
// Main program description
output += `${t('commands.main.description')}\n\n`;
output += `${t('commands.main.purpose')}\n\n`;
// Available commands
output += `📋 ${t('ui.available_commands')}:\n\n`;
for (const cmd of mainCommands) {
const translatedDesc = getTranslatedDescription(cmd);
const translatedPurpose = getTranslatedPurpose(cmd);
output += `🔧 ${cmd.name()}\n`;
output += ` ${translatedDesc}\n`;
if (translatedPurpose) {
output += ` 💡 ${translatedPurpose}\n`;
}
// Add subcommands if any
if (cmd.commands && cmd.commands.length > 0) {
for (const subCmd of cmd.commands) {
const subPath = `${cmd.name()} ${subCmd.name()}`;
const subI18nKeys = COMMAND_I18N_KEYS[subPath];
if (subI18nKeys) {
output += ` └─ ${subCmd.name()}: ${t(subI18nKeys.description)}\n`;
}
else {
output += ` └─ ${subCmd.name()}: ${subCmd.description() || ''}\n`;
}
}
}
output += '\n';
}
return output;
}
//# sourceMappingURL=commandHelpers.js.map