






















@@ -10,6 +10,7 @@ import { defaultRuntime } from "../runtime.js";
1010import { theme } from "../terminal/theme.js";
1111import { commitPluginInstallRecordsWithConfig } from "./plugins-install-record-commit.js";
1212import { refreshPluginRegistryAfterConfigMutation } from "./plugins-registry-refresh.js";
13+import { logPluginUpdateOutcomes } from "./plugins-update-outcomes.js";
1314import {
1415resolveHookPackUpdateSelection,
1516resolvePluginUpdateSelection,
@@ -92,29 +93,10 @@ export async function runPluginUpdateCommand(params: {
9293},
9394});
949595-for (const outcome of pluginResult.outcomes) {
96-if (outcome.status === "error") {
97-defaultRuntime.log(theme.error(outcome.message));
98-continue;
99-}
100-if (outcome.status === "skipped") {
101-defaultRuntime.log(theme.warn(outcome.message));
102-continue;
103-}
104-defaultRuntime.log(outcome.message);
105-}
106-107-for (const outcome of hookResult.outcomes) {
108-if (outcome.status === "error") {
109-defaultRuntime.log(theme.error(outcome.message));
110-continue;
111-}
112-if (outcome.status === "skipped") {
113-defaultRuntime.log(theme.warn(outcome.message));
114-continue;
115-}
116-defaultRuntime.log(outcome.message);
117-}
96+const outcomeSummary = logPluginUpdateOutcomes({
97+outcomes: [...pluginResult.outcomes, ...hookResult.outcomes],
98+log: (message) => defaultRuntime.log(message),
99+});
118100119101if (!params.opts.dryRun && (pluginResult.changed || hookResult.changed)) {
120102const nextPluginInstallRecords = pluginResult.config.plugins?.installs ?? {};
@@ -147,10 +129,7 @@ export async function runPluginUpdateCommand(params: {
147129defaultRuntime.log("Restart the gateway to load plugins and hooks.");
148130}
149131150-if (
151-pluginResult.outcomes.some((outcome) => outcome.status === "error") ||
152-hookResult.outcomes.some((outcome) => outcome.status === "error")
153-) {
132+if (outcomeSummary.hasErrors) {
154133defaultRuntime.exit(1);
155134}
156135}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。