|
| 1 | +import { execSync } from "child_process"; |
1 | 2 | import fs from "fs"; |
2 | 3 | import path from "path"; |
3 | 4 |
|
4 | 5 | const root = process.cwd(); |
5 | 6 | const bumpType = (process.env.BUMP_TYPE || "minor").toLowerCase(); |
| 7 | +const PLACEHOLDER = "0.0.0-awu-dev"; |
6 | 8 |
|
7 | 9 | if (bumpType !== "minor" && bumpType !== "major") { |
8 | 10 | console.error(`Invalid BUMP_TYPE: ${bumpType}. Must be "minor" or "major".`); |
9 | 11 | process.exit(1); |
10 | 12 | } |
11 | 13 |
|
12 | 14 | const packages = [ |
13 | | - "packages/appwrite-utils/package.json", |
14 | | - "packages/appwrite-utils-helpers/package.json", |
15 | | - "packages/appwrite-utils-cli/package.json", |
16 | | - "packages/appwrite-utils-mcp/package.json", |
| 15 | + { dir: "packages/appwrite-utils", name: "appwrite-utils" }, |
| 16 | + { dir: "packages/appwrite-utils-helpers", name: "appwrite-utils-helpers" }, |
| 17 | + { dir: "packages/appwrite-utils-cli", name: "appwrite-utils-cli" }, |
| 18 | + { dir: "packages/appwrite-utils-mcp", name: "appwrite-utils-mcp" }, |
17 | 19 | ]; |
18 | 20 |
|
19 | | -for (const rel of packages) { |
20 | | - const filePath = path.join(root, rel); |
21 | | - const pkg = JSON.parse(fs.readFileSync(filePath, "utf8")); |
22 | | - const [major, minor, patch] = pkg.version.split(".").map(Number); |
| 21 | +function getRemoteVersion(pkgName) { |
| 22 | + try { |
| 23 | + return execSync(`npm view ${pkgName} version`, { |
| 24 | + encoding: "utf8", |
| 25 | + stdio: ["ignore", "pipe", "ignore"], |
| 26 | + }).trim(); |
| 27 | + } catch { |
| 28 | + return "0.0.0"; |
| 29 | + } |
| 30 | +} |
23 | 31 |
|
24 | | - const oldVersion = pkg.version; |
25 | | - if (bumpType === "major") { |
26 | | - pkg.version = `${major + 1}.0.0`; |
27 | | - } else { |
28 | | - pkg.version = `${major}.${minor + 1}.0`; |
| 32 | +function bumpVersion(version, type) { |
| 33 | + const [major, minor] = version.split(".").map(Number); |
| 34 | + if (type === "major") { |
| 35 | + return `${major + 1}.0.0`; |
29 | 36 | } |
| 37 | + return `${major}.${minor + 1}.0`; |
| 38 | +} |
| 39 | + |
| 40 | +for (const pkg of packages) { |
| 41 | + const filePath = path.join(root, pkg.dir, "package.json"); |
| 42 | + const remoteVersion = getRemoteVersion(pkg.name); |
| 43 | + const newVersion = bumpVersion(remoteVersion, bumpType); |
| 44 | + |
| 45 | + let content = fs.readFileSync(filePath, "utf8"); |
| 46 | + content = content.replace(PLACEHOLDER, newVersion); |
| 47 | + fs.writeFileSync(filePath, content); |
30 | 48 |
|
31 | | - fs.writeFileSync(filePath, JSON.stringify(pkg, null, 2) + "\n"); |
32 | | - console.log(`${pkg.name}: ${oldVersion} -> ${pkg.version}`); |
| 49 | + console.log(`${pkg.name}: ${remoteVersion} (npm) -> ${newVersion}`); |
33 | 50 | } |
0 commit comments