mirror of
https://github.com/aiclientproxy/proxycast.git
synced 2026-09-24 23:10:56 +08:00
chore(release): v0.79.0
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import process from "node:process";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
function escapeRegExp(value) {
|
||||
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
||||
}
|
||||
|
||||
function extractSection(content, sectionName) {
|
||||
const pattern = new RegExp(
|
||||
`^\\[${escapeRegExp(sectionName)}\\]\\s*([\\s\\S]*?)(?=^\\[|\\Z)`,
|
||||
"m",
|
||||
);
|
||||
const match = content.match(pattern);
|
||||
return match?.[1] ?? "";
|
||||
}
|
||||
|
||||
function parseStringField(section, fieldName) {
|
||||
const pattern = new RegExp(
|
||||
`^\\s*${escapeRegExp(fieldName)}\\s*=\\s*\"([^\"]+)\"\\s*$`,
|
||||
"m",
|
||||
);
|
||||
return section.match(pattern)?.[1] ?? null;
|
||||
}
|
||||
|
||||
function parseWorkspaceField(section, fieldName) {
|
||||
const pattern = new RegExp(
|
||||
`^\\s*${escapeRegExp(fieldName)}\\.workspace\\s*=\\s*true\\s*$`,
|
||||
"m",
|
||||
);
|
||||
return pattern.test(section);
|
||||
}
|
||||
|
||||
export function readCargoVersions(cargoTomlPath) {
|
||||
const content = fs.readFileSync(cargoTomlPath, "utf8");
|
||||
const workspacePackageSection = extractSection(content, "workspace.package");
|
||||
const packageSection = extractSection(content, "package");
|
||||
|
||||
const workspaceVersion = parseStringField(workspacePackageSection, "version");
|
||||
const packageVersion = parseStringField(packageSection, "version");
|
||||
const packageVersionIsWorkspace = parseWorkspaceField(packageSection, "version");
|
||||
|
||||
return {
|
||||
workspaceVersion,
|
||||
packageVersion,
|
||||
packageVersionIsWorkspace,
|
||||
};
|
||||
}
|
||||
|
||||
export function readWorkspaceAppVersion(repoRoot = process.cwd()) {
|
||||
const cargoTomlPath = path.join(repoRoot, "src-tauri", "Cargo.toml");
|
||||
const { workspaceVersion } = readCargoVersions(cargoTomlPath);
|
||||
return workspaceVersion;
|
||||
}
|
||||
|
||||
const currentFilePath = fileURLToPath(import.meta.url);
|
||||
const entryFilePath = process.argv[1] ? path.resolve(process.argv[1]) : null;
|
||||
|
||||
if (entryFilePath && currentFilePath === entryFilePath) {
|
||||
const repoRoot = path.resolve(path.dirname(currentFilePath), "..");
|
||||
const version = readWorkspaceAppVersion(repoRoot);
|
||||
if (!version) {
|
||||
console.error("[proxycast] 无法从 src-tauri/Cargo.toml 读取 workspace 版本");
|
||||
process.exit(1);
|
||||
}
|
||||
process.stdout.write(version);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import process from "node:process";
|
||||
|
||||
import { readCargoVersions } from "./app-version.mjs";
|
||||
|
||||
function readJson(filePath) {
|
||||
return JSON.parse(fs.readFileSync(filePath, "utf8"));
|
||||
}
|
||||
|
||||
const repoRoot = path.resolve(process.cwd());
|
||||
const cargoTomlPath = path.join(repoRoot, "src-tauri", "Cargo.toml");
|
||||
const tauriConfigPath = path.join(repoRoot, "src-tauri", "tauri.conf.json");
|
||||
const packageJsonPath = path.join(repoRoot, "package.json");
|
||||
|
||||
const cargo = readCargoVersions(cargoTomlPath);
|
||||
const tauriConfig = readJson(tauriConfigPath);
|
||||
const packageJson = readJson(packageJsonPath);
|
||||
|
||||
const sourceVersion = cargo.workspaceVersion;
|
||||
const issues = [];
|
||||
|
||||
if (!sourceVersion) {
|
||||
issues.push("src-tauri/Cargo.toml [workspace.package].version 缺失");
|
||||
}
|
||||
|
||||
if (!cargo.packageVersionIsWorkspace && cargo.packageVersion !== sourceVersion) {
|
||||
issues.push(
|
||||
`src-tauri/Cargo.toml [package].version (${cargo.packageVersion ?? "missing"}) 与 workspace.version (${sourceVersion ?? "missing"}) 不一致`,
|
||||
);
|
||||
}
|
||||
|
||||
if ((packageJson.version ?? null) !== sourceVersion) {
|
||||
issues.push(
|
||||
`package.json version (${packageJson.version ?? "missing"}) 与 workspace.version (${sourceVersion ?? "missing"}) 不一致`,
|
||||
);
|
||||
}
|
||||
|
||||
if ((tauriConfig.version ?? null) !== sourceVersion) {
|
||||
issues.push(
|
||||
`src-tauri/tauri.conf.json version (${tauriConfig.version ?? "missing"}) 与 workspace.version (${sourceVersion ?? "missing"}) 不一致`,
|
||||
);
|
||||
}
|
||||
|
||||
if (issues.length > 0) {
|
||||
console.error("[proxycast] 应用版本一致性检查失败:");
|
||||
for (const issue of issues) {
|
||||
console.error(`- ${issue}`);
|
||||
}
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(`[proxycast] 版本一致性检查通过: ${sourceVersion}`);
|
||||
|
||||
Reference in New Issue
Block a user