UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

121 lines 4.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerGlobalCommands = registerGlobalCommands; const auth_adapter_1 = require("../config/auth-adapter"); const manager_1 = require("../config/manager"); const global_handler_1 = require("../handlers/global.handler"); const config_1 = require("../types/config"); const errors_1 = require("../utils/errors"); const api_command_1 = require("../utils/api-command"); const DEFAULT_TIMEOUT_MS = 30000; async function loadGlobalConfig(parentOptions) { const authResult = auth_adapter_1.authAdapter.tryGetAuthConfig(parentOptions); if (!authResult) { throw new Error(auth_adapter_1.authAdapter.getStatusMessage(parentOptions)); } let configResult; try { configResult = await manager_1.configManager.load({ cliOptions: parentOptions }); } catch (error) { if (error instanceof Error && error.message.includes('Auth configuration is incomplete')) { configResult = { config: { baseUrl: 'https://api.polyv.net', timeout: DEFAULT_TIMEOUT_MS, debug: false, }, }; } else { throw error; } } return { authConfig: authResult.config, serviceConfig: { baseUrl: configResult.config.baseUrl, timeout: configResult.config.timeout, debug: configResult.config.debug, }, }; } function parseJsonArray(value) { const parsed = JSON.parse(value); if (!Array.isArray(parsed)) { throw new Error('settings must be a JSON array'); } return parsed; } function parseJsonObject(value) { const parsed = JSON.parse(value); if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) { throw new Error('config must be a JSON object'); } return parsed; } function withGlobalHandler(program, run) { return (async () => { try { const parentOptions = program.opts(); const { authConfig, serviceConfig } = await loadGlobalConfig(parentOptions); const handler = new global_handler_1.GlobalHandler(authConfig, serviceConfig); await run(handler); } catch (error) { (0, errors_1.logError)(error instanceof Error ? error : new Error(String(error))); process.exit(1); } })(); } function registerGlobalCommands(program) { const globalCmd = program .command('global') .description('Manage global account settings'); const authCmd = globalCmd .command('auth') .description('Global auth settings'); authCmd .command('get') .description('Get global auth settings') .option('-o, --output <format>', 'output format (table|json)', config_1.validateOutputFormat, 'table') .action((options) => withGlobalHandler(program, handler => handler.getAuth({ output: options.output, }))); authCmd .command('update') .description('Update global auth settings') .requiredOption('--settings <json>', 'auth settings JSON array with exactly 2 items', parseJsonArray) .option('-f, --force', 'skip confirmation prompt') .option('-o, --output <format>', 'output format (table|json)', config_1.validateOutputFormat, 'table') .action((options) => withGlobalHandler(program, handler => handler.updateAuth({ authSettings: options.settings, force: options.force, output: options.output, }))); const pageSettingCmd = globalCmd .command('page-setting') .description('Global page settings'); pageSettingCmd .command('get') .description('Get global page settings') .option('-o, --output <format>', 'output format (table|json)', config_1.validateOutputFormat, 'table') .action((options) => withGlobalHandler(program, handler => handler.getPageSetting({ output: options.output, }))); pageSettingCmd .command('update') .description('Update global page settings') .option('--config-json <json>', 'page setting JSON object', parseJsonObject) .option('-f, --force', 'skip confirmation prompt') .option('-o, --output <format>', 'output format (table|json)', config_1.validateOutputFormat, 'table') .action((options) => withGlobalHandler(program, handler => { const config = (0, api_command_1.resolveJsonObjectOption)(options.configJson, program.opts()['config']); return handler.updatePageSetting({ ...(config ? { config } : {}), force: options.force, output: options.output, }); })); } //# sourceMappingURL=global.commands.js.map