chore: create script for updating RELEASE.md before PR (#232)
* added prompt-sync and semver libraries * added a release update script * removed semver package as dependency * removed versioning, updated descriptions * resolve conflict in package.json
This commit is contained in:
parent
5aa7c19874
commit
c73675710f
3 changed files with 163 additions and 3 deletions
53
package-lock.json
generated
53
package-lock.json
generated
|
@ -13,7 +13,8 @@
|
|||
"apps/*"
|
||||
],
|
||||
"dependencies": {
|
||||
"prettier-plugin-astro": "^0.7.0"
|
||||
"prettier-plugin-astro": "^0.7.0",
|
||||
"prompt-sync": "^4.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-turbo": "^0.0.4",
|
||||
|
@ -6412,6 +6413,33 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/prompt-sync": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz",
|
||||
"integrity": "sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==",
|
||||
"dependencies": {
|
||||
"strip-ansi": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prompt-sync/node_modules/ansi-regex": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
|
||||
"integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/prompt-sync/node_modules/strip-ansi": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^4.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/prompts": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
|
||||
|
@ -13229,6 +13257,29 @@
|
|||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
|
||||
"integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
|
||||
},
|
||||
"prompt-sync": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz",
|
||||
"integrity": "sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==",
|
||||
"requires": {
|
||||
"strip-ansi": "^5.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
|
||||
"integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g=="
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||
"requires": {
|
||||
"ansi-regex": "^4.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"prompts": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
|
||||
|
|
|
@ -28,7 +28,8 @@
|
|||
"patch": "npm version patch -w",
|
||||
"minor": "npm version minor -w",
|
||||
"major": "npm version major -w",
|
||||
"publish": "turbo run lint build check test && npm publish --access public -w"
|
||||
"publish": "turbo run lint build check test && npm publish --access public -w",
|
||||
"release": "node ./packages/pr-updater.js"
|
||||
},
|
||||
"license": "ISC",
|
||||
"workspaces": [
|
||||
|
@ -36,7 +37,8 @@
|
|||
"apps/*"
|
||||
],
|
||||
"dependencies": {
|
||||
"prettier-plugin-astro": "^0.7.0"
|
||||
"prettier-plugin-astro": "^0.7.0",
|
||||
"prompt-sync": "^4.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-turbo": "^0.0.4",
|
||||
|
|
107
packages/pr-updater.js
Normal file
107
packages/pr-updater.js
Normal file
|
@ -0,0 +1,107 @@
|
|||
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/RELEASE.md');
|
||||
writeReleaseMD(releaseFile, featuresArr, fixesArr);
|
||||
break;
|
||||
case '2':
|
||||
var releaseFile = path.resolve(__dirname, './form/RELEASE.md');
|
||||
writeReleaseMD(releaseFile, featuresArr, fixesArr);
|
||||
break;
|
||||
case '3':
|
||||
var releaseFile = path.resolve(__dirname, './validator/RELEASE.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');
|
Loading…
Reference in a new issue