cerberus-claude-cli
Version:
CLI tool for preparing files and projects for Claude AI. Collect, organize, and analyze source code files to create comprehensive project contexts.
63 lines (55 loc) • 2.39 kB
JavaScript
const chalk = require('chalk');
// const figlet = require('figlet'); // TODO: Use for banner if needed
const inquirer = require('inquirer');
const logger = require('../utils/logger');
/**
* Displays the application banner
*/
function displayBanner() {
logger.info(
chalk.red(`
██████╗███████╗██████╗ ██████╗ ███████╗██████╗ ██╗ ██╗███████╗
██╔════╝██╔════╝██╔══██╗██╔══██╗██╔════╝██╔══██╗██║ ██║██╔════╝
██║ █████╗ ██████╔╝██████╔╝█████╗ ██████╔╝██║ ██║███████╗
██║ ██╔══╝ ██╔══██╗██╔══██╗██╔══╝ ██╔══██╗██║ ██║╚════██║
╚██████╗███████╗██║ ██║██████╔╝███████╗██║ ██║╚██████╔╝███████║
╚═════╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝
`)
);
}
/**
* Creates a main menu prompt
* @returns {Promise<string>} User's choice
*/
async function mainMenu() {
const i18n = require('../utils/i18n');
const { choice } = await inquirer.prompt([
{
type: 'list',
name: 'choice',
message: i18n.t('menu.main.title'),
choices: [
{ name: i18n.t('menu.main.project'), value: 'project' },
{ name: i18n.t('menu.main.configure'), value: 'configure' },
{ name: i18n.t('menu.main.exit'), value: 'exit' },
],
},
]);
// We'll handle 'configure' in the main app flow instead
// of executing it directly here
return choice;
}
/**
* Creates a back option for menus
* @param {Array} choices - List of menu choices
* @returns {Array} Choices with back option
*/
function withBackOption(choices) {
const i18n = require('../utils/i18n');
return [...choices, { name: i18n.t('common.goBack'), value: 'back' }];
}
module.exports = {
displayBanner,
mainMenu,
withBackOption,
};