mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-04 17:17:33 +08:00
chore: fix release-alpha-version
This commit is contained in:
parent
1baa840160
commit
5be1d604ee
@ -1,48 +1,38 @@
|
||||
import fs from "fs/promises";
|
||||
import path from "path";
|
||||
import { program } from "commander";
|
||||
|
||||
/**
|
||||
* 更新 package.json 文件中的版本号
|
||||
* @param {string} versionTag 版本标签 (如 "alpha", "beta", "rc")
|
||||
*/
|
||||
async function updatePackageVersion(versionTag) {
|
||||
async function updatePackageVersion() {
|
||||
const _dirname = process.cwd();
|
||||
const packageJsonPath = path.join(_dirname, "package.json");
|
||||
try {
|
||||
const data = await fs.readFile(packageJsonPath, "utf8");
|
||||
const packageJson = JSON.parse(data);
|
||||
|
||||
// 获取当前版本并清理可能存在的旧标签
|
||||
let currentVersion = packageJson.version.replace(
|
||||
/-(alpha|beta|rc)\.?\d*$/i,
|
||||
"",
|
||||
);
|
||||
let newVersion = `${currentVersion}-${versionTag}`;
|
||||
let result = packageJson.version;
|
||||
if (!result.includes("alpha")) {
|
||||
result = `${result}-alpha`;
|
||||
}
|
||||
|
||||
console.log(
|
||||
"[INFO]: Current package.json version is: ",
|
||||
packageJson.version,
|
||||
);
|
||||
packageJson.version = newVersion;
|
||||
console.log("[INFO]: Current package.json version is: ", result);
|
||||
packageJson.version = result;
|
||||
await fs.writeFile(
|
||||
packageJsonPath,
|
||||
JSON.stringify(packageJson, null, 2),
|
||||
"utf8",
|
||||
);
|
||||
console.log(`[INFO]: package.json version updated to: ${newVersion}`);
|
||||
return newVersion;
|
||||
console.log(`[INFO]: package.json version updated to: ${result}`);
|
||||
} catch (error) {
|
||||
console.error("Error updating package.json version:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新 Cargo.toml 文件中的版本号
|
||||
* @param {string} versionTag 版本标签
|
||||
*/
|
||||
async function updateCargoVersion(versionTag) {
|
||||
async function updateCargoVersion() {
|
||||
const _dirname = process.cwd();
|
||||
const cargoTomlPath = path.join(_dirname, "src-tauri", "Cargo.toml");
|
||||
try {
|
||||
@ -50,12 +40,10 @@ async function updateCargoVersion(versionTag) {
|
||||
const lines = data.split("\n");
|
||||
|
||||
const updatedLines = lines.map((line) => {
|
||||
if (line.trim().startsWith("version =")) {
|
||||
// 清理可能存在的旧标签
|
||||
const cleanedVersion = line.replace(/-(alpha|beta|rc)\.?\d*"/i, '"');
|
||||
const versionMatch = cleanedVersion.match(/version\s*=\s*"([^"]+)"/);
|
||||
if (versionMatch) {
|
||||
const newVersion = `${versionMatch[1]}-${versionTag}`;
|
||||
if (line.startsWith("version =")) {
|
||||
const versionMatch = line.match(/version\s*=\s*"([^"]+)"/);
|
||||
if (versionMatch && !versionMatch[1].includes("alpha")) {
|
||||
const newVersion = `${versionMatch[1]}-alpha`;
|
||||
return line.replace(versionMatch[1], newVersion);
|
||||
}
|
||||
}
|
||||
@ -63,83 +51,46 @@ async function updateCargoVersion(versionTag) {
|
||||
});
|
||||
|
||||
await fs.writeFile(cargoTomlPath, updatedLines.join("\n"), "utf8");
|
||||
console.log(`[INFO]: Cargo.toml version updated with ${versionTag} tag`);
|
||||
} catch (error) {
|
||||
console.error("Error updating Cargo.toml version:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新 tauri.conf.json 文件中的版本号
|
||||
* @param {string} versionTag 版本标签
|
||||
*/
|
||||
async function updateTauriConfigVersion(versionTag) {
|
||||
async function updateTauriConfigVersion() {
|
||||
const _dirname = process.cwd();
|
||||
const tauriConfigPath = path.join(_dirname, "src-tauri", "tauri.conf.json");
|
||||
try {
|
||||
const data = await fs.readFile(tauriConfigPath, "utf8");
|
||||
const tauriConfig = JSON.parse(data);
|
||||
|
||||
// 清理可能存在的旧标签
|
||||
let currentVersion = tauriConfig.version.replace(
|
||||
/-(alpha|beta|rc)\.?\d*$/i,
|
||||
"",
|
||||
);
|
||||
let newVersion = `${currentVersion}-${versionTag}`;
|
||||
let version = tauriConfig.version;
|
||||
if (!version.includes("alpha")) {
|
||||
version = `${version}-alpha`;
|
||||
}
|
||||
|
||||
console.log(
|
||||
"[INFO]: Current tauri.conf.json version is: ",
|
||||
tauriConfig.version,
|
||||
);
|
||||
tauriConfig.version = newVersion;
|
||||
console.log("[INFO]: Current tauri.conf.json version is: ", version);
|
||||
tauriConfig.version = version;
|
||||
await fs.writeFile(
|
||||
tauriConfigPath,
|
||||
JSON.stringify(tauriConfig, null, 2),
|
||||
"utf8",
|
||||
);
|
||||
console.log(`[INFO]: tauri.conf.json version updated to: ${newVersion}`);
|
||||
console.log(`[INFO]: tauri.conf.json version updated to: ${version}`);
|
||||
} catch (error) {
|
||||
console.error("Error updating tauri.conf.json version:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 主函数,依次更新所有文件的版本号
|
||||
* @param {string} versionTag 版本标签
|
||||
*/
|
||||
async function main(versionTag) {
|
||||
if (!versionTag) {
|
||||
console.error("Error: Version tag is required");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// 验证版本标签是否有效
|
||||
const validTags = ["alpha", "beta", "rc"];
|
||||
if (!validTags.includes(versionTag.toLowerCase())) {
|
||||
console.error(
|
||||
`Error: Invalid version tag. Must be one of: ${validTags.join(", ")}`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
try {
|
||||
console.log(`[INFO]: Updating versions with ${versionTag} tag...`);
|
||||
await updatePackageVersion(versionTag);
|
||||
await updateCargoVersion(versionTag);
|
||||
await updateTauriConfigVersion(versionTag);
|
||||
console.log("[SUCCESS]: All version updates completed successfully!");
|
||||
} catch (error) {
|
||||
console.error("[ERROR]: Failed to update versions:", error);
|
||||
process.exit(1);
|
||||
}
|
||||
async function main() {
|
||||
await updatePackageVersion();
|
||||
await updateCargoVersion();
|
||||
await updateTauriConfigVersion();
|
||||
}
|
||||
|
||||
// 设置命令行界面
|
||||
program
|
||||
.name("pnpm release-version")
|
||||
.description("Add version tag (alpha/beta/rc) to project version numbers")
|
||||
.argument("<version-tag>", "version tag to add (alpha, beta, or rc)")
|
||||
.action(main)
|
||||
.parse(process.argv);
|
||||
main().catch(console.error);
|
||||
|
Loading…
x
Reference in New Issue
Block a user