@interopio/desktop-cli
Version:
io.Connect Desktop Seed Repository CLI Tools
144 lines ⢠6.51 kB
JavaScript
;
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