26 lines
684 B
JavaScript
26 lines
684 B
JavaScript
const assert = require("node:assert/strict");
|
|
const { execFileSync } = require("node:child_process");
|
|
const { version } = require("../package.json");
|
|
const git = (...args) => execFileSync("git", args, { encoding: "utf8" }).trim();
|
|
|
|
assert.equal(
|
|
git("status", "--porcelain"),
|
|
"",
|
|
"Commit all changes before preparing a release",
|
|
);
|
|
const tags = git(
|
|
"tag",
|
|
"--merged",
|
|
"HEAD",
|
|
"--list",
|
|
"v[0-9]*",
|
|
"--sort=-version:refname",
|
|
)
|
|
.split("\n")
|
|
.filter((tag) => /^v\d+\.\d+\.\d+$/.test(tag));
|
|
assert.equal(
|
|
version,
|
|
tags[0]?.slice(1) ?? "0.0.0",
|
|
"Version is already prepared or release tags are missing. Fetch tags; finish the existing release before preparing another.",
|
|
);
|