import type { Command } from "commander"; export type ManagerLookupResult = { manager: T | null; error?: string; }; export function formatErrorMessage(err: unknown): string { return err instanceof Error ? err.message : String(err); } export async function withManager(params: { getManager: () => Promise>; onMissing: (error?: string) => void; run: (manager: T) => Promise; close: (manager: T) => Promise; onCloseError?: (err: unknown) => void; }): Promise { const { manager, error } = await params.getManager(); if (!manager) { params.onMissing(error); return; } try { await params.run(manager); } finally { try { await params.close(manager); } catch (err) { params.onCloseError?.(err); } } } export async function runCommandWithRuntime( runtime: { error: (message: string) => void; exit: (code: number) => void }, action: () => Promise, onError?: (error: unknown) => void, ): Promise { try { await action(); } catch (err) { if (onError) { onError(err); return; } runtime.error(String(err)); runtime.exit(1); } } export function resolveOptionFromCommand( command: Command | undefined, key: string, ): T | undefined { let current: Command | null | undefined = command; while (current) { const opts = current.opts?.() ?? {}; if (opts[key] !== undefined) { return opts[key]; } current = current.parent ?? undefined; } return undefined; }