mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-05-15 22:30:38 +08:00
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
import { readFile, writeFile } from "node:fs/promises";
|
|
import path from "node:path";
|
|
|
|
function incrementVersion(version) {
|
|
if (typeof version !== "string" || !version.trim()) {
|
|
throw new Error("manifest.json version is missing.");
|
|
}
|
|
|
|
const segments = version.split(".").map((segment) => {
|
|
if (!/^\d+$/.test(segment)) {
|
|
throw new Error(`Unsupported version segment: ${segment}`);
|
|
}
|
|
return Number(segment);
|
|
});
|
|
|
|
if (!segments.length) {
|
|
throw new Error(`Unsupported version format: ${version}`);
|
|
}
|
|
|
|
let carry = 1;
|
|
for (let index = segments.length - 1; index >= 0 && carry; index -= 1) {
|
|
segments[index] += carry;
|
|
if (index > 0 && segments[index] >= 10) {
|
|
segments[index] = 0;
|
|
carry = 1;
|
|
} else {
|
|
carry = 0;
|
|
}
|
|
}
|
|
|
|
return segments.join(".");
|
|
}
|
|
|
|
async function main() {
|
|
const dryRun = process.argv.includes("--dry-run");
|
|
const manifestPath = path.resolve(process.cwd(), process.env.MANIFEST_PATH || "manifest.json");
|
|
const manifestRaw = await readFile(manifestPath, "utf8");
|
|
const manifest = JSON.parse(manifestRaw);
|
|
const currentVersion = manifest?.version;
|
|
const nextVersion = incrementVersion(currentVersion);
|
|
|
|
if (dryRun) {
|
|
console.log(`${currentVersion} -> ${nextVersion}`);
|
|
return;
|
|
}
|
|
|
|
manifest.version = nextVersion;
|
|
await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
|
|
console.log(`Updated manifest version: ${currentVersion} -> ${nextVersion}`);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error(error instanceof Error ? error.message : String(error));
|
|
process.exitCode = 1;
|
|
});
|