Files
test-repo/scripts/release/run.js
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

78 lines
1.9 KiB
JavaScript
Raw Normal View History

2022-10-12 12:45:37 +08:00
import semver from "semver";
import parseArguments from "./parse-arguments.js";
2022-10-14 17:17:47 +08:00
import * as steps from "./steps/index.js";
2025-12-01 07:25:25 +08:00
import { logPromise, readJson } from "./utilities.js";
2022-10-12 12:45:37 +08:00
2022-10-14 17:17:47 +08:00
const params = parseArguments();
2025-06-23 09:31:26 +08:00
const {
default: { version: previousVersion },
} = await import("prettier/package.json", {
with: { type: "json" },
});
2022-10-14 17:17:47 +08:00
if (semver.parse(previousVersion) === null) {
throw new Error(`Unexpected previousVersion: ${previousVersion}`);
} else {
params.previousVersion = previousVersion;
params.previousVersionOnDefaultBranch = (
await readJson("package.json")
).version;
2022-10-12 12:45:37 +08:00
}
2022-10-14 17:17:47 +08:00
for (let step of [
{
process: steps.chooseVersion,
skip: Boolean(params.version),
},
2024-06-05 17:24:27 +08:00
{
name: "Validating new version",
process: steps.validateNewVersion,
},
2025-06-23 10:19:15 +08:00
{
name: "Checking git status",
process: steps.checkGitStatus,
skip: params.dry,
},
{
name: "Installing NPM dependencies",
process: steps.installDependencies,
skip: params.dry || params.skipDependenciesInstall || !params.manual,
},
{
name: "Bumping version",
process: steps.updateVersion,
skip: params.dry,
},
steps.generateBundles,
steps.updateChangelog,
{
name: "Committing and pushing to remote",
process: steps.pushToGit,
skip: params.dry,
},
params.manual ? steps.publishToNpm : steps.waitForBotRelease,
steps.showInstructionsAfterNpmPublish,
{
name: "Merge release notes PR",
process: steps.mergeBlogPost,
},
2024-06-05 17:24:27 +08:00
steps.updateDependentsCount,
{
name: "Cleaning changelog",
process: steps.cleanChangelog,
skip: params.dry || params.next,
},
steps.bumpPrettier,
2022-10-14 17:17:47 +08:00
steps.postPublishSteps,
]) {
if (typeof step === "function") {
step = { process: step };
}
const runStep = () => step.process(params);
if (step.name) {
await logPromise(step.name, runStep, step.skip);
} else if (!step.skip) {
await runStep();
}
}