UNPKG

@vizzly-testing/cli

Version:

Visual review platform for UI developers and designers

73 lines (68 loc) 2.23 kB
import { loadConfig } from '../utils/config-loader.js'; import * as output from '../utils/output.js'; import { createServices } from '../services/index.js'; /** * Finalize command implementation * @param {string} parallelId - Parallel ID to finalize * @param {Object} options - Command options * @param {Object} globalOptions - Global CLI options */ export async function finalizeCommand(parallelId, options = {}, globalOptions = {}) { output.configure({ json: globalOptions.json, verbose: globalOptions.verbose, color: !globalOptions.noColor }); try { // Load configuration with CLI overrides let allOptions = { ...globalOptions, ...options }; let config = await loadConfig(globalOptions.config, allOptions); // Validate API token if (!config.apiKey) { output.error('API token required. Use --token or set VIZZLY_TOKEN environment variable'); process.exit(1); } if (globalOptions.verbose) { output.info('Configuration loaded'); output.debug('Config details', { parallelId, apiUrl: config.apiUrl }); } // Create services and get API service output.startSpinner('Finalizing parallel build...'); let services = createServices(config, 'finalize'); let apiService = services.apiService; output.stopSpinner(); // Call finalize endpoint let result = await apiService.finalizeParallelBuild(parallelId); if (globalOptions.json) { output.data(result); } else { output.success(`Parallel build ${result.build.id} finalized successfully`); output.info(`Status: ${result.build.status}`); output.info(`Parallel ID: ${result.build.parallel_id}`); } } catch (error) { output.stopSpinner(); output.error('Failed to finalize parallel build', error); process.exit(1); } finally { output.cleanup(); } } /** * Validate finalize options * @param {string} parallelId - Parallel ID to finalize * @param {Object} options - Command options */ export function validateFinalizeOptions(parallelId, _options) { let errors = []; if (!parallelId || parallelId.trim() === '') { errors.push('Parallel ID is required'); } return errors; }