From 1c68d51be14e0669d8c31139ce12b05eae5497c1 Mon Sep 17 00:00:00 2001 From: David Snelling Date: Tue, 24 Jun 2025 10:57:27 -0700 Subject: [PATCH] feat(scripts): enhance version script and update badges dynamically in README - Added a new `version` script in `package.json` to execute `generate-version.js` for automated version management. - Enhanced `generate-version.js` to dynamically update badges in `README.md` for npm version, Node.js version, and TypeScript version. - Modified badge update logic to retrieve Node.js and TypeScript versions from `package.json` for accuracy. - Updated `VERSION` constant in `version.ts` to `0.9.7` to reflect the latest release. - Streamlined the versioning process for better maintainability and consistency in documentation. --- package.json | 1 + scripts/generate-version.js | 32 +++++++++++++++++++++++++------- src/utils/version.ts | 2 +- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 7acea678..2e87cd29 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "start": "node dist/unified.js", "demo": "npm run build && npm run build:browser && npx http-server -o /index.html", "cli": "node ./cli-wrapper.js", + "version": "node scripts/generate-version.js", "version:patch": "npm version patch", "version:minor": "npm version minor", "version:major": "npm version major", diff --git a/scripts/generate-version.js b/scripts/generate-version.js index 2a462529..ad4adeb7 100755 --- a/scripts/generate-version.js +++ b/scripts/generate-version.js @@ -56,19 +56,37 @@ fs.writeFileSync(outputFile, content) console.log(`Generated version.ts with version ${version}`) -// Update README.md with the current version +// Update README.md with the current version, Node.js version, and TypeScript version try { let readmeContent = fs.readFileSync(readmePath, 'utf8') - // Replace the version in the badge URL - const updatedReadme = readmeContent.replace( - /\[\!\[Version\]\(https:\/\/img\.shields\.io\/badge\/version-[0-9]+\.[0-9]+\.[0-9]+-blue\.svg\)\]/g, - `[![Version](https://img.shields.io/badge/version-${version}-blue.svg)]` + // Get Node.js version requirement from package.json + const nodeVersion = packageJson.engines.node.replace('>=', '') + + // Get TypeScript version from package.json devDependencies + const typescriptVersion = packageJson.devDependencies.typescript.replace('^', '') + + // Update npm badge + readmeContent = readmeContent.replace( + /\[\!\[npm\]\(https:\/\/img\.shields\.io\/npm\/v\/@soulcraft\/brainy\.svg\)\]\(https:\/\/www\.npmjs\.com\/package\/@soulcraft\/brainy\)/g, + `[![npm](https://img.shields.io/npm/v/@soulcraft/brainy.svg)](https://www.npmjs.com/package/@soulcraft/brainy)` + ) + + // Update Node.js badge + readmeContent = readmeContent.replace( + /\[\!\[Node\.js\]\(https:\/\/img\.shields\.io\/badge\/node-%3E%3D[0-9]+\.[0-9]+\.[0-9]+-brightgreen\.svg\)\]\(https:\/\/nodejs\.org\/\)/g, + `[![Node.js](https://img.shields.io/badge/node-%3E%3D${nodeVersion}-brightgreen.svg)](https://nodejs.org/)` + ) + + // Update TypeScript badge + readmeContent = readmeContent.replace( + /\[\!\[TypeScript\]\(https:\/\/img\.shields\.io\/badge\/TypeScript-[0-9]+\.[0-9]+\.[0-9]+-blue\.svg\)\]\(https:\/\/www\.typescriptlang\.org\/\)/g, + `[![TypeScript](https://img.shields.io/badge/TypeScript-${typescriptVersion}-blue.svg)](https://www.typescriptlang.org/)` ) // Write the updated README back to disk - fs.writeFileSync(readmePath, updatedReadme) - console.log(`Updated README.md with version ${version}`) + fs.writeFileSync(readmePath, readmeContent) + console.log(`Updated README.md with npm version ${version}, Node.js version ${nodeVersion}, and TypeScript version ${typescriptVersion}`) } catch (error) { console.error('Error updating README.md:', error) } diff --git a/src/utils/version.ts b/src/utils/version.ts index 908331af..3b467387 100644 --- a/src/utils/version.ts +++ b/src/utils/version.ts @@ -3,4 +3,4 @@ * Do not modify this file directly. */ -export const VERSION = '0.9.6'; +export const VERSION = '0.9.7';