UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

232 lines 8.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerConfigCommands = registerConfigCommands; const global_1 = require("../config/global"); const readline_1 = require("readline"); const config_1 = require("../types/config"); function createReadlineInterface() { return (0, readline_1.createInterface)({ input: process.stdin, output: process.stdout }); } function promptInput(rl, question, required = false) { return new Promise((resolve) => { const ask = () => { rl.question(question, (answer) => { const trimmed = answer.trim(); if (required && !trimmed) { console.log('❌ This field is required. Please try again.'); ask(); } else { resolve(trimmed); } }); }; ask(); }); } async function interactiveConfig() { const rl = createReadlineInterface(); console.log('🔧 PolyV Live CLI Configuration'); console.log('Please provide your PolyV API credentials:'); console.log(''); try { const existingConfig = global_1.globalConfig.load(); const currentAppId = existingConfig.appId ? ` (current: ${existingConfig.appId})` : ''; const appId = await promptInput(rl, `📱 App ID${currentAppId}: `, !existingConfig.appId) || existingConfig.appId; const currentAppSecret = existingConfig.appSecret ? ' (current: ***hidden***)' : ''; const appSecret = await promptInput(rl, `🔐 App Secret${currentAppSecret}: `, !existingConfig.appSecret) || existingConfig.appSecret; const currentUserId = existingConfig.userId ? ` (current: ${existingConfig.userId})` : ''; const userId = await promptInput(rl, `👤 User ID (optional)${currentUserId}: `, false) || existingConfig.userId; const currentBaseUrl = existingConfig.baseUrl ? ` (current: ${existingConfig.baseUrl})` : ''; const baseUrl = await promptInput(rl, `🌐 Base URL (optional)${currentBaseUrl}: `, false) || existingConfig.baseUrl; rl.close(); const newConfig = {}; if (appId) newConfig.appId = appId; if (appSecret) newConfig.appSecret = appSecret; if (userId) newConfig.userId = userId; if (baseUrl) newConfig.baseUrl = baseUrl; global_1.globalConfig.save(newConfig); console.log(''); console.log('✅ Configuration saved successfully!'); console.log(`📁 Config file: ${global_1.globalConfig.getConfigPath()}`); const validation = global_1.globalConfig.validate(); if (validation.isValid) { console.log('✅ Configuration is valid and ready to use!'); } else { console.log('⚠️ Configuration is incomplete. Missing:', validation.missingKeys.join(', ')); } } catch (error) { rl.close(); throw error; } } function showConfig(options) { const config = global_1.globalConfig.load(); const configPath = global_1.globalConfig.getConfigPath(); if (options.output === 'json') { const maskedConfig = { ...config, appSecret: config.appSecret ? '***hidden***' : undefined }; console.log(JSON.stringify(maskedConfig, null, 2)); return; } console.log('🔧 PolyV Live CLI Configuration'); console.log(''); console.log(`📁 Config file: ${configPath}`); console.log(''); if (Object.keys(config).length === 0) { console.log('⚠️ No configuration found. Run `polyv-live-cli config set` to configure.'); return; } console.log('Current settings:'); console.log(`📱 App ID: ${config.appId || '(not set)'}`); console.log(`🔐 App Secret: ${config.appSecret ? '***hidden***' : '(not set)'}`); console.log(`👤 User ID: ${config.userId || '(not set)'}`); console.log(`🌐 Base URL: ${config.baseUrl || '(default)'}`); const validation = global_1.globalConfig.validate(); console.log(''); if (validation.isValid) { console.log('✅ Configuration is valid and ready to use!'); } else { console.log('❌ Configuration is incomplete. Missing:', validation.missingKeys.join(', ')); console.log('Run `polyv-live-cli config set` to complete configuration.'); } } function setConfigValue(key, value) { const validKeys = ['appId', 'appSecret', 'userId', 'baseUrl']; if (!validKeys.includes(key)) { console.error(`❌ Invalid config key: ${key}`); console.error(`Valid keys are: ${validKeys.join(', ')}`); process.exit(1); } global_1.globalConfig.set(key, value); console.log(`✅ Set ${key} = ${key === 'appSecret' ? '***hidden***' : value}`); } function getConfigValue(key) { const validKeys = ['appId', 'appSecret', 'userId', 'baseUrl']; if (!validKeys.includes(key)) { console.error(`❌ Invalid config key: ${key}`); console.error(`Valid keys are: ${validKeys.join(', ')}`); process.exit(1); } const value = global_1.globalConfig.get(key); if (value === undefined) { console.log(`${key}: (not set)`); } else { console.log(`${key}: ${key === 'appSecret' ? '***hidden***' : value}`); } } function unsetConfigValue(key) { const validKeys = ['appId', 'appSecret', 'userId', 'baseUrl']; if (!validKeys.includes(key)) { console.error(`❌ Invalid config key: ${key}`); console.error(`Valid keys are: ${validKeys.join(', ')}`); process.exit(1); } global_1.globalConfig.unset(key); console.log(`✅ Unset ${key}`); } function clearConfig() { global_1.globalConfig.clear(); } function registerConfigCommands(program) { const config = program .command('config') .description('Manage PolyV API configuration'); config .command('set') .description('Set configuration interactively') .action(async () => { try { await interactiveConfig(); } catch (error) { console.error('❌ Configuration failed:', error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); config .command('show') .description('Show current configuration') .option('-o, --output <format>', 'output format (table|json)', config_1.validateOutputFormat, 'table') .action((options) => { try { showConfig(options); } catch (error) { console.error('❌ Failed to show configuration:', error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); config .command('get <key>') .description('Get a specific configuration value') .action((key) => { try { getConfigValue(key); } catch (error) { console.error('❌ Failed to get configuration:', error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); config .command('put <key> <value>') .description('Set a specific configuration value') .action((key, value) => { try { setConfigValue(key, value); } catch (error) { console.error('❌ Failed to set configuration:', error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); config .command('unset <key>') .description('Remove a specific configuration value') .action((key) => { try { unsetConfigValue(key); } catch (error) { console.error('❌ Failed to unset configuration:', error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); config .command('clear') .description('Clear all configuration') .action(() => { try { clearConfig(); } catch (error) { console.error('❌ Failed to clear configuration:', error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); config.addHelpText('after', ` Examples: polyv-live-cli config set # Interactive configuration setup polyv-live-cli config show # Show current configuration polyv-live-cli config show --output json # Show configuration in JSON format polyv-live-cli config get appId # Get specific configuration value polyv-live-cli config put appId your_app_id # Set specific configuration value polyv-live-cli config unset userId # Remove specific configuration value polyv-live-cli config clear # Clear all configuration `); } //# sourceMappingURL=config.commands.js.map