|
| 1 | +#!/usr/bin/env node |
| 2 | + |
| 3 | +const path = require("path"); |
| 4 | +const fs = require("fs"); |
| 5 | +const semver = require("semver"); |
| 6 | + |
| 7 | +// Get bump type from CLI argument, e.g. "major", "minor", or "patch"; default is "patch" |
| 8 | +const bumpType = process.argv[2] || "patch"; |
| 9 | + |
| 10 | +// 1) Path to version.json |
| 11 | +const versionJsonPath = path.join(__dirname, "../version.json"); |
| 12 | + |
| 13 | +// 2) Read version.json |
| 14 | +const versionData = JSON.parse(fs.readFileSync(versionJsonPath, "utf8")); |
| 15 | + |
| 16 | +// 3) Bump the semver version |
| 17 | +const oldVersion = versionData.version || "1.0.0"; |
| 18 | +const newVersion = semver.inc(oldVersion, bumpType); |
| 19 | + |
| 20 | +// 4) Bump iOS buildNumber |
| 21 | +const oldIosBuildNumber = parseInt(versionData.iosBuildNumber || "1", 10); |
| 22 | +const newIosBuildNumber = oldIosBuildNumber + 1; |
| 23 | + |
| 24 | +// 5) Bump Android versionCode |
| 25 | +const oldAndroidVersionCode = versionData.androidVersionCode || 1; |
| 26 | +const newAndroidVersionCode = oldAndroidVersionCode + 1; |
| 27 | + |
| 28 | +// 6) Update the in-memory object |
| 29 | +versionData.version = newVersion; |
| 30 | +versionData.iosBuildNumber = String(newIosBuildNumber); |
| 31 | +versionData.androidVersionCode = newAndroidVersionCode; |
| 32 | + |
| 33 | +// 7) Write back to version.json |
| 34 | +fs.writeFileSync(versionJsonPath, JSON.stringify(versionData, null, 2), "utf8"); |
| 35 | + |
| 36 | +// 8) Console log results |
| 37 | +console.log(""); |
| 38 | +console.log(`✅ Bumped version from ${oldVersion} to ${newVersion}`); |
| 39 | +console.log( |
| 40 | + `✅ Bumped iOS buildNumber from ${oldIosBuildNumber} to ${newIosBuildNumber}` |
| 41 | +); |
| 42 | +console.log( |
| 43 | + `✅ Bumped Android versionCode from ${oldAndroidVersionCode} to ${newAndroidVersionCode}` |
| 44 | +); |
| 45 | +console.log(""); |
0 commit comments