Enable every plugin recommended preset and replace Biome with ESLint formatting. Preserve API contracts and JSX whitespace; verify source, tests, builds and tooling.
28 lines
842 B
JavaScript
28 lines
842 B
JavaScript
const assert = require("node:assert/strict");
|
|
const { execFileSync } = require("node:child_process");
|
|
|
|
const { version } = require("../package.json");
|
|
// eslint-disable-next-line sonarjs/no-os-command-from-path -- Repository checks use the developer/CI Git installation; arguments never invoke a shell.
|
|
const git = (...arguments_) => execFileSync("git", arguments_, { encoding: "utf8" }).trim();
|
|
|
|
assert.equal(
|
|
git("status", "--porcelain"),
|
|
"",
|
|
"Commit all changes before preparing a release",
|
|
);
|
|
const tag_ = git(
|
|
"tag",
|
|
"--merged",
|
|
"HEAD",
|
|
"--list",
|
|
"v[0-9]*",
|
|
"--sort=-version:refname",
|
|
)
|
|
.split("\n")
|
|
.find(tag => /^v\d+\.\d+\.\d+$/.test(tag));
|
|
assert.equal(
|
|
version,
|
|
tag_?.slice(1) ?? "0.0.0",
|
|
"Version is already prepared or release tags are missing. Fetch tags; finish the existing release before preparing another.",
|
|
);
|