import type { Command } from "commander";import { formatErrorMessage } from "../infra/errors.js";export { formatErrorMessage };export type ManagerLookupResult<T> = {manager: T | null;error?: string;};export async function withManager<T>(params: {getManager: () => Promise<ManagerLookupResult<T>>;onMissing: (error?: string) => void;run: (manager: T) => Promise<void>;close: (manager: T) => Promise<void>;onCloseError?: (err: unknown) => void;}): Promise<void> {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<void>,onError?: (error: unknown) => void,): Promise<void> {try {await action();} catch (err) {if (onError) {onError(err);return;}runtime.error(String(err));runtime.exit(1);}}export function resolveOptionFromCommand<T>(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;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。