revit-cli
Version:
A scalable CLI tool for Revit communication and data manipulation
92 lines • 3.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.initializeCLI = initializeCLI;
exports.setupErrorHandlers = setupErrorHandlers;
const logger_1 = require("../utils/logger");
const config_manager_1 = require("../core/config-manager");
const plugin_manager_1 = require("../core/plugin-manager");
const revit_connector_1 = require("../core/revit-connector");
/**
* Initialize all core CLI components
*/
async function initializeCLI() {
// Start with debug logging for initialization
const logger = new logger_1.Logger('debug');
try {
logger.debug('=== CLI INITIALIZATION START ===');
logger.debug('Starting CLI component initialization...');
// Initialize configuration
logger.debug('Initializing ConfigManager...');
const configManager = new config_manager_1.ConfigManager();
await configManager.initialize();
logger.debug('ConfigManager initialized successfully');
// Initialize logger with config
const config = configManager.getConfig();
logger.debug('Configuration loaded:', config);
if (config.logging?.level) {
logger.debug(`Setting log level to: ${config.logging.level}`);
logger.setLevel(config.logging.level);
}
else {
logger.debug('No log level in config, keeping debug level for troubleshooting');
logger.setLevel('debug'); // Force debug for troubleshooting
}
if (config.logging?.file) {
logger.debug(`Setting log file to: ${config.logging.file}`);
await logger.setLogFile(config.logging.file);
}
// Initialize Revit connector
logger.debug('Initializing RevitConnector...');
const revitConnector = new revit_connector_1.RevitConnector();
await revitConnector.initialize(configManager);
logger.debug('RevitConnector initialized successfully');
// Initialize plugin manager
logger.debug('Initializing PluginManager...');
const pluginManager = new plugin_manager_1.PluginManager();
await pluginManager.initialize();
logger.debug('PluginManager initialized successfully');
// Create tool context
logger.debug('Creating ToolContext...');
const toolContext = {
logger,
configManager,
revitConnector,
pluginManager
};
logger.debug('ToolContext created successfully');
const cliState = {
logger,
configManager,
pluginManager,
revitConnector,
toolContext
};
logger.debug('=== CLI INITIALIZATION COMPLETE ===');
logger.debug('All CLI components initialized successfully');
return cliState;
}
catch (error) {
logger.error('=== CLI INITIALIZATION FAILED ===');
logger.error('Failed to initialize CLI:', {
message: error instanceof Error ? error.message : String(error),
stack: error instanceof Error ? error.stack : undefined
});
process.exit(1);
}
}
/**
* Setup error handlers for the CLI
*/
function setupErrorHandlers(logger) {
// Handle unhandled rejections
process.on('unhandledRejection', (reason, promise) => {
logger.error('Unhandled Rejection at:', promise, 'reason:', reason);
process.exit(1);
});
// Handle uncaught exceptions
process.on('uncaughtException', (error) => {
logger.error('Uncaught Exception:', error);
process.exit(1);
});
}
//# sourceMappingURL=initializer.js.map