From 9786ae19f2341dc1540ec7b75bbaa6885ab5dcdf Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Wed, 28 Aug 2024 15:10:10 +0200 Subject: [PATCH] Add missing release scripts --- package.json | 4 +++- scripts/release-channel.js | 18 ++++++++++++++++++ scripts/release-notes.js | 21 +++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 scripts/release-channel.js create mode 100644 scripts/release-notes.js diff --git a/package.json b/package.json index 41cf340..410cd7e 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,9 @@ "serve": "live-server .", "watch": "npm run build -- -w", "build": "tailwindcss -o dist/tailwind.css", - "test": "exit 0" + "test": "exit 0", + "release-channel": "node ./scripts/release-channel.js", + "release-notes": "node ./scripts/release-notes.js" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20" diff --git a/scripts/release-channel.js b/scripts/release-channel.js new file mode 100644 index 0000000..0c827f3 --- /dev/null +++ b/scripts/release-channel.js @@ -0,0 +1,18 @@ +// Given a version, figure out what the release channel is so that we can publish to the correct +// channel on npm. +// +// E.g.: +// +// 1.2.3 -> latest (default) +// 0.0.0-insiders.ffaa88 -> insiders +// 4.1.0-alpha.4 -> alpha + +let version = + process.argv[2] || process.env.npm_package_version || require('../package.json').version + +let match = /\d+\.\d+\.\d+-(.*)\.\d+/g.exec(version) +if (match) { + console.log(match[1]) +} else { + console.log('latest') +} diff --git a/scripts/release-notes.js b/scripts/release-notes.js new file mode 100644 index 0000000..23d869b --- /dev/null +++ b/scripts/release-notes.js @@ -0,0 +1,21 @@ +// Given a version, figure out what the release notes are so that we can use this to pre-fill the +// relase notes on a GitHub release for the current version. + +let path = require('path') +let fs = require('fs') + +let version = + process.argv[2] || process.env.npm_package_version || require('../package.json').version + +let changelog = fs.readFileSync(path.resolve(__dirname, '..', 'CHANGELOG.md'), 'utf8') +let match = new RegExp( + `## \\[${version}\\] - (.*)\\n\\n([\\s\\S]*?)\\n(?:(?:##\\s)|(?:\\[))`, + 'g' +).exec(changelog) + +if (match) { + let [, date, notes] = match + console.log(notes.trim()) +} else { + console.log(`Placeholder release notes for version: v${version}`) +}