UNPKG

amaran-light-cli

Version:

Command line tool for controlling Aputure Amaran lights via WebSocket to a local Amaran desktop app.

55 lines 2.55 kB
import chalk from 'chalk'; import { addStandardOptions, runDeviceAction } from '../cmdUtils.js'; export function registerPreset(program, deps) { const { asyncCommand } = deps; const preset = program.command('preset').description('Manage and recall presets'); addStandardOptions(preset.command('list').description('List all available presets')).action(asyncCommand(handlePresetList(deps))); addStandardOptions(preset.command('recall <device> <preset_id>').description('Recall a preset on a device')).action(asyncCommand(handlePresetRecall(deps))); addStandardOptions(preset.command('set <device> <preset_id>').description('Set a preset on a device (alias for recall)')).action(asyncCommand(handlePresetRecall(deps))); } function handlePresetList(deps) { const { createController } = deps; return async (options) => { const controller = await createController(options.url, options.clientId, options.debug); controller.getPresetList((success, message, data) => { if (success) { // biome-ignore lint/suspicious/noExplicitAny: API response data structure varies const presets = data.data; console.log(chalk.blue('Available Presets:')); console.log(JSON.stringify(presets, null, 2)); } else { console.error(chalk.red(`Error getting preset list: ${message}`)); } controller.disconnect(); }); }; } function handlePresetRecall(deps) { return async (deviceQuery, presetId, options) => { return runDeviceAction({ deps, options, deviceQuery, actionName: `recall preset ${presetId}`, }, (device, controller) => { return new Promise((resolve) => { const nodeId = device.node_id; controller.recallPreset(nodeId, presetId, (success, message) => { if (success) { console.log(chalk.green(`✓ Preset ${presetId} recalled on ${device.device_name || 'device'}`)); } else { console.error(chalk.red(`✗ Failed to recall preset: ${message}`)); } resolve(); }); }); }, () => { console.log(chalk.yellow('Preset recall for "all" is not supported.')); return Promise.resolve(); }); }; } export default registerPreset; //# sourceMappingURL=preset.js.map