feat(logging): Enhance logging and module publishing with color-coded output, progress tracking, and improved CLI startup
This commit is contained in:
@@ -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);
|
||||
};
|
||||
|
Reference in New Issue
Block a user