UNPKG

qraft

Version:

A powerful CLI tool to qraft structured project setups from GitHub template repositories

223 lines 9.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.configCommand = configCommand; const chalk_1 = __importDefault(require("chalk")); const commander_1 = require("commander"); const inquirer_1 = __importDefault(require("inquirer")); const interactiveMode_1 = require("../interactive/interactiveMode"); function configCommand(configManager, boxManager) { const config = new commander_1.Command('config'); // Show current configuration config .command('show') .description('Show current configuration') .option('--json', 'output as JSON') .action(async (options) => { try { const currentConfig = await configManager.getConfig(); if (options.json) { console.log(JSON.stringify(currentConfig, null, 2)); return; } console.log(chalk_1.default.blue.bold('📋 Current Configuration\n')); // Default registry console.log(chalk_1.default.yellow('Default Registry:')); console.log(` ${currentConfig.defaultRegistry}\n`); // Registries console.log(chalk_1.default.yellow('Configured Registries:')); Object.entries(currentConfig.registries).forEach(([name, registry]) => { console.log(` ${chalk_1.default.cyan('•')} ${chalk_1.default.white.bold(name)}`); console.log(` Repository: ${registry.repository}`); console.log(` Base URL: ${registry.baseUrl || 'https://api.github.com'}`); console.log(` Token: ${registry.token ? chalk_1.default.green('✓ configured') : chalk_1.default.gray('not set')}`); if (name === currentConfig.defaultRegistry) { console.log(` ${chalk_1.default.green('(default)')}`); } console.log(); }); // Global token console.log(chalk_1.default.yellow('Global Token:')); console.log(` ${currentConfig.globalToken ? chalk_1.default.green('✓ configured') : chalk_1.default.gray('not set')}\n`); // Cache settings console.log(chalk_1.default.yellow('Cache Settings:')); if (currentConfig.cache) { console.log(` Enabled: ${currentConfig.cache.enabled ? chalk_1.default.green('yes') : chalk_1.default.red('no')}`); console.log(` Directory: ${currentConfig.cache.directory}`); console.log(` TTL: ${currentConfig.cache.ttl} seconds`); } else { console.log(chalk_1.default.red(' Cache configuration not found')); } } catch (error) { console.error(chalk_1.default.red('Error reading configuration:'), error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); // Add registry config .command('add-registry [name] [repository]') .description('Add a new registry') .option('--base-url <url>', 'GitHub API base URL (default: https://api.github.com)') .option('--token <token>', 'GitHub token for this registry') .option('--default', 'set as default registry') .option('-i, --interactive', 'use interactive mode') .action(async (name, repository, options) => { try { // Use interactive mode if requested or if name/repository not provided if (options.interactive || !name || !repository) { if (boxManager) { const interactiveMode = new interactiveMode_1.InteractiveMode(boxManager); await interactiveMode.configureRegistry(); return; } else { console.error(chalk_1.default.red('Interactive mode not available - BoxManager not provided')); process.exit(1); } } // Non-interactive mode await configManager.addRegistry(name, { name, repository, baseUrl: options.baseUrl, token: options.token }); if (options.default) { await configManager.setDefaultRegistry(name); } console.log(chalk_1.default.green('✅ Registry added successfully')); console.log(chalk_1.default.gray(` Name: ${name}`)); console.log(chalk_1.default.gray(` Repository: ${repository}`)); if (options.default) { console.log(chalk_1.default.gray(' Set as default registry')); } } catch (error) { console.error(chalk_1.default.red('Error adding registry:'), error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); // Remove registry config .command('remove-registry <name>') .description('Remove a registry') .option('-f, --force', 'force removal without confirmation') .action(async (name, options) => { try { if (!options.force) { const { confirm } = await inquirer_1.default.prompt([ { type: 'confirm', name: 'confirm', message: `Remove registry "${name}"?`, default: false } ]); if (!confirm) { console.log(chalk_1.default.yellow('❌ Operation cancelled')); return; } } await configManager.removeRegistry(name); console.log(chalk_1.default.green('✅ Registry removed successfully')); } catch (error) { console.error(chalk_1.default.red('Error removing registry:'), error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); // Set default registry config .command('set-default <name>') .description('Set default registry') .action(async (name) => { try { await configManager.setDefaultRegistry(name); console.log(chalk_1.default.green('✅ Default registry updated')); console.log(chalk_1.default.gray(` Default registry: ${name}`)); } catch (error) { console.error(chalk_1.default.red('Error setting default registry:'), error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); // Cache settings config .command('cache') .description('Configure cache settings') .option('--enable', 'enable cache') .option('--disable', 'disable cache') .option('--directory <dir>', 'set cache directory') .option('--ttl <seconds>', 'set cache TTL in seconds') .action(async (options) => { try { const updates = {}; if (options.enable) { updates.enabled = true; } if (options.disable) { updates.enabled = false; } if (options.directory) { updates.directory = options.directory; } if (options.ttl) { const ttl = parseInt(options.ttl, 10); if (isNaN(ttl) || ttl < 0) { console.error(chalk_1.default.red('Error: TTL must be a positive number')); process.exit(1); } updates.ttl = ttl; } if (Object.keys(updates).length === 0) { console.error(chalk_1.default.red('Error: No cache settings specified')); console.error(chalk_1.default.gray('Use --enable, --disable, --directory, or --ttl')); process.exit(1); } await configManager.updateCacheConfig(updates); console.log(chalk_1.default.green('✅ Cache settings updated')); Object.entries(updates).forEach(([key, value]) => { console.log(chalk_1.default.gray(` ${key}: ${value}`)); }); } catch (error) { console.error(chalk_1.default.red('Error updating cache settings:'), error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); // Reset configuration config .command('reset') .description('Reset configuration to defaults') .option('-f, --force', 'force reset without confirmation') .action(async (options) => { try { if (!options.force) { const { confirm } = await inquirer_1.default.prompt([ { type: 'confirm', name: 'confirm', message: 'Reset all configuration to defaults? This will remove all registries and tokens.', default: false } ]); if (!confirm) { console.log(chalk_1.default.yellow('❌ Operation cancelled')); return; } } await configManager.resetConfig(); console.log(chalk_1.default.green('✅ Configuration reset to defaults')); } catch (error) { console.error(chalk_1.default.red('Error resetting configuration:'), error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); return config; } //# sourceMappingURL=config.js.map