refactor(status): share git install label formatting

This commit is contained in:
Peter Steinberger
2026-02-15 04:49:51 +00:00
parent 3b08f3058b
commit 887ca6086e
3 changed files with 23 additions and 31 deletions

View File

@@ -22,7 +22,11 @@ import {
normalizeUpdateChannel,
resolveEffectiveUpdateChannel,
} from "../infra/update-channels.js";
import { checkUpdateStatus, compareSemverStrings } from "../infra/update-check.js";
import {
checkUpdateStatus,
compareSemverStrings,
formatGitInstallLabel,
} from "../infra/update-check.js";
import { runExec } from "../process/exec.js";
import { VERSION } from "../version.js";
import { resolveControlUiLinks } from "./onboard-helpers.js";
@@ -104,21 +108,7 @@ export async function statusAllCommand(
gitTag: update.git?.tag ?? null,
gitBranch: update.git?.branch ?? null,
});
const gitLabel =
update.installKind === "git"
? (() => {
const shortSha = update.git?.sha ? update.git.sha.slice(0, 8) : null;
const branch =
update.git?.branch && update.git.branch !== "HEAD" ? update.git.branch : null;
const tag = update.git?.tag ?? null;
const parts = [
branch ?? (tag ? "detached" : "git"),
tag ? `tag ${tag}` : null,
shortSha ? `@ ${shortSha}` : null,
].filter(Boolean);
return parts.join(" · ");
})()
: null;
const gitLabel = formatGitInstallLabel(update);
progress.tick();
progress.setLabel("Probing gateway…");

View File

@@ -12,6 +12,7 @@ import {
normalizeUpdateChannel,
resolveEffectiveUpdateChannel,
} from "../infra/update-channels.js";
import { formatGitInstallLabel } from "../infra/update-check.js";
import {
resolveMemoryCacheSummary,
resolveMemoryFtsState,
@@ -357,21 +358,7 @@ export async function statusCommand(
gitTag: update.git?.tag ?? null,
gitBranch: update.git?.branch ?? null,
});
const gitLabel =
update.installKind === "git"
? (() => {
const shortSha = update.git?.sha ? update.git.sha.slice(0, 8) : null;
const branch =
update.git?.branch && update.git.branch !== "HEAD" ? update.git.branch : null;
const tag = update.git?.tag ?? null;
const parts = [
branch ?? (tag ? "detached" : "git"),
tag ? `tag ${tag}` : null,
shortSha ? `@ ${shortSha}` : null,
].filter(Boolean);
return parts.join(" · ");
})()
: null;
const gitLabel = formatGitInstallLabel(update);
const overviewRows = [
{ Item: "Dashboard", Value: dashboard },

View File

@@ -49,6 +49,21 @@ export type UpdateCheckResult = {
registry?: RegistryStatus;
};
export function formatGitInstallLabel(update: UpdateCheckResult): string | null {
if (update.installKind !== "git") {
return null;
}
const shortSha = update.git?.sha ? update.git.sha.slice(0, 8) : null;
const branch = update.git?.branch && update.git.branch !== "HEAD" ? update.git.branch : null;
const tag = update.git?.tag ?? null;
const parts = [
branch ?? (tag ? "detached" : "git"),
tag ? `tag ${tag}` : null,
shortSha ? `@ ${shortSha}` : null,
].filter(Boolean);
return parts.join(" · ");
}
async function exists(p: string): Promise<boolean> {
try {
await fs.access(p);