114 lines
3 KiB
JavaScript
114 lines
3 KiB
JavaScript
import fs from "fs";
|
|
import { fileURLToPath } from "url";
|
|
import * as path from "path";
|
|
import promptSync from "prompt-sync";
|
|
|
|
const prompt = promptSync({ sigint: true });
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
function writeReleaseMD(releaseFile, featuresArr, fixesArr) {
|
|
var formattedMessage = "";
|
|
|
|
if (featuresArr.length != 0) {
|
|
formattedMessage += "Features";
|
|
for (var line of featuresArr) {
|
|
formattedMessage += "\n\t- " + line;
|
|
}
|
|
formattedMessage += "\n\n";
|
|
}
|
|
|
|
if (fixesArr.length != 0) {
|
|
formattedMessage += "Fixes";
|
|
for (var line of fixesArr) {
|
|
formattedMessage += "\n\t- " + line;
|
|
}
|
|
formattedMessage += "\n\n";
|
|
}
|
|
|
|
//write file
|
|
var oldRelease = fs.readFileSync(releaseFile);
|
|
var fd = fs.openSync(releaseFile, "w+");
|
|
|
|
fs.writeSync(fd, formattedMessage, 0, formattedMessage.length, 0);
|
|
fs.writeSync(fd, oldRelease, 0, oldRelease.length, formattedMessage.length);
|
|
fs.close(fd);
|
|
}
|
|
|
|
function main() {
|
|
console.log("Astro Reactive PR Release Updater (ctrl-c to exit)");
|
|
|
|
var noChanged, feature, fix, breakExisting;
|
|
var featuresArr = [];
|
|
var fixesArr = [];
|
|
|
|
do {
|
|
console.log(`What package is changed?
|
|
1. Common
|
|
2. Form
|
|
3. Validator`);
|
|
noChanged = prompt(": ");
|
|
} while (
|
|
isNaN(noChanged) ||
|
|
parseInt(noChanged) < 1 ||
|
|
parseInt(noChanged) > 3
|
|
);
|
|
|
|
do {
|
|
console.log("Description of feature (q to finish): ");
|
|
feature = prompt(": ");
|
|
|
|
if (feature != "q") {
|
|
console.log(
|
|
"Will this code change break existing examples and/or demo applications? Y/N"
|
|
);
|
|
breakExisting = prompt(": ");
|
|
if (breakExisting == "Y" || breakExisting == "y") {
|
|
feature += " (BREAKING CHANGE)";
|
|
}
|
|
featuresArr.push(feature);
|
|
}
|
|
} while (feature != "q");
|
|
|
|
do {
|
|
console.log("Description of fix (q to finish): ");
|
|
fix = prompt(": ");
|
|
|
|
if (fix != "q") {
|
|
console.log(
|
|
"Will this code change break existing examples and/or demo applications? Y/N"
|
|
);
|
|
breakExisting = prompt(": ");
|
|
if (breakExisting == "Y" || breakExisting == "y") {
|
|
fix += " (BREAKING CHANGE)";
|
|
}
|
|
fixesArr.push(fix);
|
|
}
|
|
} while (fix != "q");
|
|
|
|
switch (noChanged) {
|
|
case "1":
|
|
var releaseFile = path.resolve(__dirname, "./common/CHANGELOG.md");
|
|
writeReleaseMD(releaseFile, featuresArr, fixesArr);
|
|
break;
|
|
case "2":
|
|
var releaseFile = path.resolve(__dirname, "./form/CHANGELOG.md");
|
|
writeReleaseMD(releaseFile, featuresArr, fixesArr);
|
|
break;
|
|
case "3":
|
|
var releaseFile = path.resolve(__dirname, "./validator/CHANGELOG.md");
|
|
writeReleaseMD(releaseFile, featuresArr, fixesArr);
|
|
break;
|
|
default:
|
|
console.log("Invalid package specified.");
|
|
}
|
|
}
|
|
|
|
var continueScript;
|
|
|
|
do {
|
|
main();
|
|
console.log("Do you want to update another package release? (Y to continue)");
|
|
continueScript = prompt(": ");
|
|
} while (continueScript == "Y" || continueScript == "y");
|