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