Spaces:
Paused
Paused
| /** | |
| * Bumps the version in apps/ui/package.json and apps/server/package.json | |
| * Usage: node scripts/bump-version.mjs [major|minor|patch] | |
| * Example: node scripts/bump-version.mjs patch | |
| */ | |
| import { readFileSync, writeFileSync } from 'fs'; | |
| import { fileURLToPath } from 'url'; | |
| import { dirname, join } from 'path'; | |
| const __filename = fileURLToPath(import.meta.url); | |
| const __dirname = dirname(__filename); | |
| const bumpType = process.argv[2]?.toLowerCase(); | |
| if (!bumpType || !['major', 'minor', 'patch'].includes(bumpType)) { | |
| console.error('Error: Bump type argument is required'); | |
| console.error('Usage: node scripts/bump-version.mjs [major|minor|patch]'); | |
| console.error('Example: node scripts/bump-version.mjs patch'); | |
| process.exit(1); | |
| } | |
| const uiPackageJsonPath = join(__dirname, '..', 'package.json'); | |
| const serverPackageJsonPath = join(__dirname, '..', '..', 'server', 'package.json'); | |
| function bumpVersion(packageJsonPath, packageName) { | |
| try { | |
| const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')); | |
| const oldVersion = packageJson.version; | |
| // Parse version | |
| const versionParts = oldVersion.split('.').map(Number); | |
| if (versionParts.length !== 3) { | |
| console.error(`Error: Invalid version format in ${packageName}: ${oldVersion}`); | |
| console.error('Expected format: X.Y.Z (e.g., 1.2.3)'); | |
| process.exit(1); | |
| } | |
| // Bump version | |
| let [major, minor, patch] = versionParts; | |
| switch (bumpType) { | |
| case 'major': | |
| major += 1; | |
| minor = 0; | |
| patch = 0; | |
| break; | |
| case 'minor': | |
| minor += 1; | |
| patch = 0; | |
| break; | |
| case 'patch': | |
| patch += 1; | |
| break; | |
| } | |
| const newVersion = `${major}.${minor}.${patch}`; | |
| packageJson.version = newVersion; | |
| writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf8'); | |
| return newVersion; | |
| } catch (error) { | |
| console.error(`Error bumping version in ${packageName}: ${error.message}`); | |
| process.exit(1); | |
| } | |
| } | |
| try { | |
| // Bump UI package version | |
| const uiOldVersion = JSON.parse(readFileSync(uiPackageJsonPath, 'utf8')).version; | |
| const uiNewVersion = bumpVersion(uiPackageJsonPath, '@automaker/ui'); | |
| // Bump server package version (sync with UI) | |
| const serverOldVersion = JSON.parse(readFileSync(serverPackageJsonPath, 'utf8')).version; | |
| const serverNewVersion = bumpVersion(serverPackageJsonPath, '@automaker/server'); | |
| // Verify versions match | |
| if (uiNewVersion !== serverNewVersion) { | |
| console.error(`Error: Version mismatch! UI: ${uiNewVersion}, Server: ${serverNewVersion}`); | |
| process.exit(1); | |
| } | |
| console.log(`β Bumped version from ${uiOldVersion} to ${uiNewVersion} (${bumpType})`); | |
| console.log(`π¦ Updated @automaker/ui: ${uiOldVersion} -> ${uiNewVersion}`); | |
| console.log(`π¦ Updated @automaker/server: ${serverOldVersion} -> ${serverNewVersion}`); | |
| console.log(`π¦ Version is now: ${uiNewVersion}`); | |
| } catch (error) { | |
| console.error(`Error bumping version: ${error.message}`); | |
| process.exit(1); | |
| } | |