| #!/usr/bin/env node |
| |
| |
| |
| |
| |
|
|
| 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; |
|
|
| |
| 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); |
| } |
|
|
| |
| 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 { |
| |
| const uiOldVersion = JSON.parse(readFileSync(uiPackageJsonPath, 'utf8')).version; |
| const uiNewVersion = bumpVersion(uiPackageJsonPath, '@automaker/ui'); |
|
|
| |
| const serverOldVersion = JSON.parse(readFileSync(serverPackageJsonPath, 'utf8')).version; |
| const serverNewVersion = bumpVersion(serverPackageJsonPath, '@automaker/server'); |
|
|
| |
| 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); |
| } |
|
|