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

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

73 lines
1.9 KiB
JavaScript
Raw Normal View History

2018-06-05 16:37:52 -03:00
#!/usr/bin/env node
"use strict";
2018-08-08 23:49:22 +08:00
const { exec, execSync } = require("child_process");
2018-06-05 16:37:52 -03:00
async function run() {
const chalk = require("chalk");
2020-05-11 09:05:06 +08:00
const { string: outdentString } = require("outdent");
2018-06-05 16:37:52 -03:00
const minimist = require("minimist");
2018-08-08 23:49:22 +08:00
const semver = require("semver");
2018-06-05 16:37:52 -03:00
const { readJson } = require("./utils");
const params = minimist(process.argv.slice(2), {
string: ["version"],
boolean: ["dry"],
alias: { v: "version" },
});
2018-08-08 23:49:22 +08:00
const previousVersion = execSync("git describe --tags --abbrev=0")
.toString()
.trim();
if (semver.parse(previousVersion) === null) {
throw new Error(`Unexpected previousVersion: ${previousVersion}`);
} else {
params.previousVersion = previousVersion;
params.previousVersionOnMaster = (await readJson("package.json")).version;
}
2018-06-05 16:37:52 -03:00
const steps = [
require("./steps/validate-new-version"),
require("./steps/check-git-status"),
require("./steps/install-dependencies"),
require("./steps/run-tests"),
require("./steps/update-version"),
require("./steps/generate-bundles"),
require("./steps/update-changelog"),
require("./steps/push-to-git"),
require("./steps/publish-to-npm"),
require("./steps/bump-prettier"),
require("./steps/update-dependents-count"),
2018-06-05 16:37:52 -03:00
require("./steps/post-publish-steps"),
];
try {
for (const step of steps) {
await step(params);
}
} catch (error) {
2020-05-11 09:05:06 +08:00
const message = outdentString(error.message.trim());
2018-06-05 16:37:52 -03:00
const stack = error.stack.replace(message, "");
console.error(`${chalk.red("error")} ${message}\n${stack}`);
process.exit(1);
}
}
2018-08-08 23:49:22 +08:00
exec(
[
"git fetch --tags", // Fetch git tags to get the previous version number (i.e. the latest tag)
"yarn install", // Install script's dependencies before any require
].join(" && "),
{ cwd: __dirname },
(error) => {
if (error) {
console.error(error);
process.exit(1);
} else {
run();
}
2018-06-05 16:37:52 -03:00
}
2018-08-08 23:49:22 +08:00
);