54 lines
3.3 KiB
JavaScript
54 lines
3.3 KiB
JavaScript
const prompts = require('./prompts');
|
|
|
|
const CLIUtils = {
|
|
/**
|
|
* Display BMAD logo and version using @clack intro + box
|
|
*/
|
|
async displayLogo() {
|
|
const color = await prompts.getColor();
|
|
const termWidth = process.stdout.columns || 80;
|
|
|
|
// Full "BMad Method" logo for wide terminals, "BMad" only for narrow
|
|
const logoWide = [
|
|
' ██████╗ ███╗ ███╗ █████╗ ██████╗ ███╗ ███╗███████╗████████╗██╗ ██╗ ██████╗ ██████╗ ™',
|
|
'██╔══██╗████╗ ████║██╔══██╗██╔══██╗ ████╗ ████║██╔════╝╚══██╔══╝██║ ██║██╔═══██╗██╔══██╗',
|
|
'██████╔╝██╔████╔██║███████║██║ ██║ ██╔████╔██║█████╗ ██║ ███████║██║ ██║██║ ██║',
|
|
'██╔══██╗██║╚██╔╝██║██╔══██║██║ ██║ ██║╚██╔╝██║██╔══╝ ██║ ██╔══██║██║ ██║██║ ██║',
|
|
'██████╔╝██║ ╚═╝ ██║██║ ██║██████╔╝ ██║ ╚═╝ ██║███████╗ ██║ ██║ ██║╚██████╔╝██████╔╝',
|
|
'╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ',
|
|
];
|
|
|
|
const logoNarrow = [
|
|
' ██████╗ ███╗ ███╗ █████╗ ██████╗ ™',
|
|
' ██╔══██╗████╗ ████║██╔══██╗██╔══██╗',
|
|
' ██████╔╝██╔████╔██║███████║██║ ██║',
|
|
' ██╔══██╗██║╚██╔╝██║██╔══██║██║ ██║',
|
|
' ██████╔╝██║ ╚═╝ ██║██║ ██║██████╔╝',
|
|
' ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝',
|
|
];
|
|
|
|
const logoLines = termWidth >= 95 ? logoWide : logoNarrow;
|
|
const logo = logoLines.map((line) => color.blue(line)).join('\n');
|
|
const tagline = color.white(' Build More, Architect Dreams\n © BMad Code');
|
|
|
|
await prompts.box(`${logo}\n${tagline}`, '', {
|
|
contentAlign: 'center',
|
|
rounded: true,
|
|
formatBorder: color.blue,
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Display module configuration header
|
|
* @param {string} moduleName - Module name (fallback if no custom header)
|
|
* @param {string} header - Custom header from module.yaml
|
|
* @param {string} subheader - Custom subheader from module.yaml
|
|
*/
|
|
async displayModuleConfigHeader(moduleName, header = null, subheader = null) {
|
|
const title = header || `Configuring ${moduleName.toUpperCase()} Module`;
|
|
await prompts.note(subheader || '', title);
|
|
},
|
|
};
|
|
|
|
module.exports = { CLIUtils };
|