feat(logging): Enhance logging and module publishing with color-coded output, progress tracking, and improved CLI startup

This commit is contained in:
2025-08-08 12:06:41 +00:00
parent 9b3d77189a
commit 8a6058c421
16 changed files with 404 additions and 28 deletions

View File

@@ -3,3 +3,102 @@ import * as commitinfo from './00_commitinfo_data.js';
export const logger = plugins.smartlog.Smartlog.createForCommitinfo(commitinfo.commitinfo);
logger.enableConsole();
// Color-coded log level indicators
const logIcons = {
info: plugins.consolecolor.coloredString('', 'cyan'),
success: plugins.consolecolor.coloredString('✓', 'green'),
warn: plugins.consolecolor.coloredString('⚠', 'orange'),
error: plugins.consolecolor.coloredString('✖', 'red'),
start: plugins.consolecolor.coloredString('▶', 'blue'),
done: plugins.consolecolor.coloredString('✔', 'green'),
package: plugins.consolecolor.coloredString('📦', 'blue'),
build: plugins.consolecolor.coloredString('🔨', 'cyan'),
publish: plugins.consolecolor.coloredString('🚀', 'green'),
};
// Helper function for info messages with color
export const logInfo = (message: string, data?: any) => {
const coloredMessage = `${logIcons.info} ${plugins.consolecolor.coloredString(message, 'cyan')}`;
logger.log('info', coloredMessage, data);
};
// Helper function for success messages
export const logSuccess = (message: string, data?: any) => {
const coloredMessage = `${logIcons.success} ${plugins.consolecolor.coloredString(message, 'green')}`;
logger.log('ok', coloredMessage, data);
};
// Helper function for warning messages
export const logWarn = (message: string, data?: any) => {
const coloredMessage = `${logIcons.warn} ${plugins.consolecolor.coloredString(message, 'orange')}`;
logger.log('warn', coloredMessage, data);
};
// Helper function for error messages
export const logError = (message: string, data?: any) => {
const coloredMessage = `${logIcons.error} ${plugins.consolecolor.coloredString(message, 'red')}`;
logger.log('error', coloredMessage, data);
};
// Helper function for start of operations
export const logStart = (operation: string) => {
const coloredMessage = `${logIcons.start} ${plugins.consolecolor.coloredString(`Starting ${operation}...`, 'blue')}`;
logger.log('info', coloredMessage);
};
// Helper function for completion of operations
export const logDone = (operation: string) => {
const coloredMessage = `${logIcons.done} ${plugins.consolecolor.coloredString(`Completed ${operation}`, 'green')}`;
logger.log('ok', coloredMessage);
};
// Helper function for package-related messages
export const logPackage = (message: string, packageName: string) => {
const coloredMessage = `${logIcons.package} ${message}: ${plugins.consolecolor.coloredString(packageName, 'blue', 'white')}`;
logger.log('info', coloredMessage);
};
// Helper function for build-related messages
export const logBuild = (message: string) => {
const coloredMessage = `${logIcons.build} ${plugins.consolecolor.coloredString(message, 'cyan')}`;
logger.log('info', coloredMessage);
};
// Helper function for publish-related messages
export const logPublish = (message: string) => {
const coloredMessage = `${logIcons.publish} ${plugins.consolecolor.coloredString(message, 'green')}`;
logger.log('info', coloredMessage);
};
// Create a visual separator for different phases
export const logSeparator = () => {
const separator = plugins.consolecolor.coloredString('━'.repeat(60), 'cyan');
console.log(separator);
};
// Create a header for major sections
export const logHeader = (title: string) => {
logSeparator();
const header = plugins.consolecolor.coloredString(` ${title.toUpperCase()} `, 'white', 'blue');
console.log(header);
logSeparator();
};
// Helper for indicating ongoing operations
export const logOngoing = (text: string) => {
const spinnerIcon = plugins.consolecolor.coloredString('⟳', 'cyan');
const coloredMessage = `${spinnerIcon} ${plugins.consolecolor.coloredString(text, 'cyan')}`;
logger.log('info', coloredMessage);
};
// Progress indicator helper
export const logProgress = (current: number, total: number, item: string) => {
const percentage = Math.round((current / total) * 100);
const progressBar = '█'.repeat(Math.floor(percentage / 5)) + '░'.repeat(20 - Math.floor(percentage / 5));
const coloredProgress = plugins.consolecolor.coloredString(
`[${progressBar}] ${percentage}% - ${item}`,
percentage === 100 ? 'green' : 'blue'
);
logger.log('info', coloredProgress);
};