UNPKG

@interopio/desktop-cli

Version:

io.Connect Desktop Seed Repository CLI Tools

144 lines • 6.51 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createConfigCommand = createConfigCommand; const commander_1 = require("commander"); const fs_extra_1 = __importDefault(require("fs-extra")); const utils_1 = require("../utils"); const iocd_config_1 = require("../services/component-storage/config/iocd-config"); const component_registry_1 = require("../services/component-registry"); function createConfigCommand() { const configCommand = new commander_1.Command('config'); configCommand .description('Configuration management commands') .addCommand(createInitCommand()) .addCommand(createShowCommand()); return configCommand; } function createInitCommand() { return new commander_1.Command('init') .description('Create a sample .iocdrc configuration file') .option('-f, --force', 'Overwrite existing configuration file') .option('-o, --output <path>', 'Output file path', '.iocdrc') .action(async (options) => { try { const outputPath = options.output; // Check if file already exists if (await fs_extra_1.default.pathExists(outputPath) && !options.force) { utils_1.Logger.error(`Configuration file ${outputPath} already exists. Use --force to overwrite.`); process.exit(1); } await iocd_config_1.IocdConfigManager.createSampleConfig(outputPath); utils_1.Logger.success(`Sample configuration created: ${outputPath}`); utils_1.Logger.info('Edit the configuration file to customize your component storage settings.'); utils_1.Logger.info('Available configuration options:'); utils_1.Logger.info(' - http.baseUrl: Base URL for component downloads'); utils_1.Logger.info(' - http.urlPattern: URL pattern with variable substitution'); utils_1.Logger.info(' - settings: Global settings like cache and debug options'); utils_1.Logger.info('Components are now built-in - no manual configuration needed!'); } catch (error) { utils_1.Logger.error(`Failed to create configuration: ${error instanceof Error ? error.message : String(error)}`); process.exit(1); } }); } function createShowCommand() { return new commander_1.Command('show') .description('Display current configuration') .option('-p, --path <path>', 'Path to configuration file', '.iocdrc') .action(async (options) => { try { await displayConfiguration(options.path); } catch (error) { utils_1.Logger.error(`Failed to show configuration: ${error instanceof Error ? error.message : String(error)}`); process.exit(1); } }); } async function displayConfiguration(configPath) { const config = await iocd_config_1.IocdConfigManager.loadConfig(); displayConfigHeader(configPath); displayStorageConfiguration(config); displayBuiltInComponents(); displaySettings(config); displayEnvironmentVariables(); displayDeprecationWarnings(config); } function displayConfigHeader(configPath) { utils_1.Logger.info(`📋 Current Configuration:`); utils_1.Logger.info(` Config file: ${configPath}`); if (fs_extra_1.default.pathExistsSync(configPath)) { utils_1.Logger.success(`✅ Configuration file found: ${configPath}`); } else { utils_1.Logger.warning(`⚠️ No configuration file found at ${configPath}`); utils_1.Logger.info(' Using default configuration and environment variables'); } } function displayStorageConfiguration(config) { utils_1.Logger.info('\n🔗 Storage Configuration:'); if (config.http) { utils_1.Logger.info(` HTTP Storage:`); utils_1.Logger.info(` Base URL: ${config.http.baseUrl || 'http://localhost:8080 (default)'}`); if (config.http.urlPattern) { utils_1.Logger.info(` URL Pattern: ${config.http.urlPattern}`); } if (config.http.timeout) { utils_1.Logger.info(` Timeout: ${config.http.timeout}ms`); } if (config.http.headers && Object.keys(config.http.headers).length > 0) { utils_1.Logger.info(` Headers: ${Object.keys(config.http.headers).join(', ')}`); } } else { utils_1.Logger.info(` HTTP Storage: Using defaults (http://localhost:8080)`); } } function displayBuiltInComponents() { utils_1.Logger.info('\n✨ Available Components (built-in):'); const componentNames = (0, component_registry_1.getAllComponentNames)(); componentNames.forEach(name => { const definition = (0, component_registry_1.getComponentDefinition)(name); if (definition) { utils_1.Logger.info(` • ${name} - ${definition.description}`); } }); } function displaySettings(config) { utils_1.Logger.info('\n⚙️ Settings:'); const settings = config.settings || {}; utils_1.Logger.info(` Default Storage: ${settings.defaultStorage || 'http'}`); utils_1.Logger.info(` Debug Mode: ${settings.debug || false}`); utils_1.Logger.info(` Use Cache: ${settings.useCache !== false}`); utils_1.Logger.info(` Cache Directory: ${settings.cacheDir || '.iocd-cache'}`); } function displayEnvironmentVariables() { utils_1.Logger.info('\n🌍 Environment Variables:'); const envVars = [ 'IOCD_HTTP_BASE_URL', 'IOCD_DEBUG', 'IOCD_CACHE_DIR', 'IOCD_STORAGE_TYPE' ]; const activeVars = envVars.filter(envVar => process.env[envVar]); if (activeVars.length > 0) { activeVars.forEach(envVar => { utils_1.Logger.info(` ${envVar}: ${process.env[envVar]}`); }); } else { utils_1.Logger.info(' No environment variables set'); } } function displayDeprecationWarnings(config) { if (config.components && Object.keys(config.components).length > 0) { utils_1.Logger.warning('\n⚠️ DEPRECATED: Manual component configuration found'); utils_1.Logger.info(' Components are now built-in. Manual configuration is no longer needed.'); utils_1.Logger.info(' You can remove the "components" section from your .iocdrc file.'); } } //# sourceMappingURL=config.js.map