Files
tutti/apps/desktop/scripts/resolve-build-version.mjs
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

54 lines
1.2 KiB
JavaScript

#!/usr/bin/env node
import { execFileSync } from "node:child_process";
import { readFile } from "node:fs/promises";
import { resolve } from "node:path";
import { resolveDesktopBuildVersion } from "./lib/desktopBuildVersion.mjs";
const appDir = resolve(import.meta.dirname, "..");
const repoRoot = resolve(appDir, "../..");
const packageJsonPath = resolve(appDir, "package.json");
function readGitDescribeVersion() {
try {
return execFileSync(
"git",
[
"describe",
"--tags",
"--match",
"v*",
"--match",
"tutti-desktop-v*",
"--always",
"--dirty"
],
{
cwd: repoRoot,
encoding: "utf8",
stdio: ["ignore", "pipe", "ignore"]
}
).trim();
} catch {
return "";
}
}
const packageJson = JSON.parse(await readFile(packageJsonPath, "utf8"));
const fallbackVersion =
typeof packageJson.version === "string" ? packageJson.version : "";
const version = resolveDesktopBuildVersion({
describeVersion: readGitDescribeVersion(),
fallbackVersion,
releaseTag: process.env.TUTTI_DESKTOP_RELEASE_TAG
});
if (!version) {
process.stderr.write("Could not resolve desktop build version\n");
process.exit(1);
}
process.stdout.write(`${version}\n`);