tools/version.js (62 lines of code) (raw):
/**
* Version management tool script
* @module version
*/
const { readJSONSync, writeJSONSync } = require("fs-extra");
const { VERSION_FILE } = require("./common");
const color = require("picocolors");
/** @type {string} Version number */
const version = process.argv[2];
/**
* Step Four: Update version configuration file
* @async
*/
async function stepFour() {
const json = readJSONSync(VERSION_FILE);
const current = {
versionLabel: version,
docUrl: `/docs/${version}/about`,
downloadUrl: `https://github.com/apache/seatunnel/releases/tag/${version}`,
sourceTag: version,
};
json.en.table.latestData = [current];
json.en.table.historyData = [current, ...json.en.table.historyData];
json["zh-CN"].table.latestData = [current];
json["zh-CN"].table.historyData = [
current,
...json["zh-CN"].table.historyData,
];
writeJSONSync(VERSION_FILE, json, { spaces: 2 });
}
/**
* Main function
* @async
*/
async function main() {
// Dynamic import execa
const { execa } = await import('execa');
if (!version) {
throw new Error("Missing version number");
}
// step one
const stepOne = execa("npm", ["run", "sync", version], {
stdio: "pipe",
});
stepOne.stdout.on("data", (data) => {
console.log(`sync: ${data}`);
});
stepOne.stderr.on("data", (data) => {
console.error(color.red(`syncerr: ${data}`));
});
await stepOne;
// step two
const stepTwo = execa("docusaurus", ["docs:version", version], {
stdio: "pipe",
});
stepTwo.stdout.on("data", (data) => {
console.log(`sync: ${data}`);
});
stepTwo.stderr.on("data", (data) => {
console.error(color.red(`syncerr: ${data}`));
});
await stepTwo;
// step three
const stepThree = execa("npm", ["run", "image-copy"], {
stdio: "pipe",
});
stepThree.stdout.on("data", (data) => {
console.log(`sync: ${data}`);
});
stepThree.stderr.on("data", (data) => {
console.error(color.red(`syncerr: ${data}`));
});
await stepThree;
await stepFour();
}
main().catch((e) => {
console.error(color.red(e));
process.exit(1);
});