From 430ba65f416b01adf9b87d5461940ea09d2df40d Mon Sep 17 00:00:00 2001 From: David Snelling Date: Thu, 5 Jun 2025 14:05:05 -0700 Subject: [PATCH] feat: add version generation script and auto-generated `version.ts` file Introduced a script to generate a `version.ts` file exporting the package version from `package.json`. This simplifies accessing version data in the CLI, especially for global installations. Included auto-generated `version.ts` in the project structure. --- scripts/generate-version.js | 51 +++++++++++++++++++++++++++++++++++++ src/utils/version.ts | 6 +++++ 2 files changed, 57 insertions(+) create mode 100755 scripts/generate-version.js create mode 100644 src/utils/version.ts diff --git a/scripts/generate-version.js b/scripts/generate-version.js new file mode 100755 index 00000000..37eb7e2f --- /dev/null +++ b/scripts/generate-version.js @@ -0,0 +1,51 @@ +#!/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. + */ + +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'); + +// Read package.json +const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); + +// 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 = '${packageJson.version}'; +`; + +// Write the file +fs.writeFileSync(outputFile, content); + +console.log(`Generated version.ts with version ${packageJson.version}`); diff --git a/src/utils/version.ts b/src/utils/version.ts new file mode 100644 index 00000000..1438e6a3 --- /dev/null +++ b/src/utils/version.ts @@ -0,0 +1,6 @@ +/** + * This file is auto-generated during the build process. + * Do not modify this file directly. + */ + +export const VERSION = '0.7.1';