#!/usr/bin/env node /** * Generate Version Script * * This script generates a version.js file that exports the version from package.json. * This allows the CLI to access the version without having to read package.json directly, * which can be problematic when the package is installed globally. * * It also updates the version in the README.md file to ensure it stays in sync with package.json. */ import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; // Get the directory of the current module const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); // Path to the root directory const rootDir = path.join(__dirname, '..'); // Path to package.json const packageJsonPath = path.join(rootDir, 'package.json'); // Path to the output directory const outputDir = path.join(rootDir, 'src', 'utils'); // Path to the output file const outputFile = path.join(outputDir, 'version.ts'); // Path to README.md const readmePath = path.join(rootDir, 'README.md'); // Read package.json const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); const version = packageJson.version; // Create the output directory if it doesn't exist if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } // Generate the version.ts file const content = `/** * This file is auto-generated during the build process. * Do not modify this file directly. */ export const VERSION = '${version}'; `; // Write the file fs.writeFileSync(outputFile, content); console.log(`Generated version.ts with version ${version}`); // Update README.md with the current 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)]` ); // Write the updated README back to disk fs.writeFileSync(readmePath, updatedReadme); console.log(`Updated README.md with version ${version}`); } catch (error) { console.error('Error updating README.md:', error); }