/** * Version Update Utility * * This script helps update the version in the version.ts file. * It automatically handles the logic for incrementing the version * according to the rules (e.g., 2.10.0 becomes 3.0.0). * * Run this script using ts-node or similar: * npx ts-node src/scripts/update-version.ts [major|minor|patch] */ import * as fs from 'fs'; import * as path from 'path'; import { APP_VERSION, incrementVersion, Version } from '../lib/version'; // Get the version update type from command line arguments const updateType = process.argv[2] as 'major' | 'minor' | 'patch' | undefined; if (!updateType || !['major', 'minor', 'patch'].includes(updateType)) { console.error('Please specify a valid version update type: major, minor, or patch'); console.log('Example: npx ts-node src/scripts/update-version.ts minor'); process.exit(1); } // Calculate the new version const newVersion: Version = incrementVersion(APP_VERSION, updateType); console.log(`Updating version from ${APP_VERSION.major}.${APP_VERSION.minor}.${APP_VERSION.patch} to ${newVersion.major}.${newVersion.minor}.${newVersion.patch}`); // Path to the version.ts file const versionFilePath = path.resolve(__dirname, '../lib/version.ts'); // Read the current content let content: string; try { content = fs.readFileSync(versionFilePath, 'utf8'); } catch (error) { console.error('Error reading version.ts file:', error); process.exit(1); } // Update the version in the file const updatedContent = content.replace( /export const APP_VERSION: Version = \{\s*major: \d+,\s*minor: \d+,\s*patch: \d+\s*\};/, `export const APP_VERSION: Version = {\n major: ${newVersion.major},\n minor: ${newVersion.minor},\n patch: ${newVersion.patch}\n};` ); // Write the updated content back to the file try { fs.writeFileSync(versionFilePath, updatedContent, 'utf8'); console.log('Version updated successfully!'); // Also update package.json const packageJsonPath = path.resolve(__dirname, '../../package.json'); const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); packageJson.version = `${newVersion.major}.${newVersion.minor}.${newVersion.patch}`; fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf8'); console.log('package.json updated successfully!'); console.log('\nRemember to rebuild the application for changes to take effect.'); } catch (error) { console.error('Error writing to version.ts file:', error); process.exit(1); }