UNPKG

perf-audit-cli

Version:

CLI tool for continuous performance monitoring and analysis

78 lines 2.74 kB
import ora from 'ora'; import { PerformanceDatabaseService } from "../core/database/index.js"; import { PluginManager } from "../core/plugin-system.js"; import { CIIntegration } from "./ci-integration.js"; import { loadConfig } from "./config.js"; import { Logger } from "./logger.js"; export const getCurrentTimestamp = () => { return new Date().toISOString(); }; export const initializeCommand = async (message = 'Loading configuration...') => { const spinner = ora(message).start(); const config = await loadConfig(); return { config, spinner }; }; export const initializePluginManager = async (config) => { const pluginManager = new PluginManager(config); await pluginManager.loadPlugins(); return pluginManager; }; export const saveBuildData = async (result, additionalData) => { try { const ciContext = CIIntegration.detectCIEnvironment(); const db = await PerformanceDatabaseService.instance(); const buildId = await db.saveBuild({ timestamp: result.timestamp, branch: ciContext.branch, commitHash: ciContext.commitHash, url: additionalData?.url, device: additionalData?.device, bundles: [...result.serverBundles, ...result.clientBundles], metrics: additionalData?.metrics, recommendations: result.recommendations, }); await db.close(); Logger.debug(`Build saved with ID: ${buildId}`); } catch (error) { Logger.warn('Failed to save build to database'); Logger.debug(`Database error: ${error instanceof Error ? error.message : String(error)}`); } }; export const handleCommandError = async (spinner, error, message = 'Operation failed', config) => { spinner.fail(message); Logger.error(error instanceof Error ? error.message : 'Unknown error'); if (config) { try { const pluginManager = new PluginManager(config); await pluginManager.loadPlugins(); await pluginManager.executeHook('onError', { error: error, context: 'command', }); await pluginManager.unloadPlugins(); } catch { } } process.exit(1); }; export const completeCommand = (spinner, message, shouldExit = false, exitCode = 0) => { spinner.succeed(message); if (shouldExit) { process.exit(exitCode); } }; export const exitBasedOnStatus = (status) => { switch (status) { case 'error': process.exit(1); break; case 'warning': process.exit(2); break; default: break; } }; //# sourceMappingURL=command-helpers.js.map