polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
232 lines • 8.99 kB
JavaScript
;
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