|
1 | 1 | import { spawnSync } from '../helpers'; |
2 | 2 | import { PROJECT_ROOT } from './constants'; |
3 | 3 |
|
4 | | -const PACKAGES_TO_SKIP_BUMPING = ['mongosh', '@mongosh/cli-repl']; |
| 4 | +import { promises as fs } from 'fs'; |
| 5 | +import path from 'path'; |
| 6 | +import { getPackagesInTopologicalOrder } from '@mongodb-js/monorepo-tools'; |
5 | 7 |
|
| 8 | +/** Packages which get bumped only as part of the mongosh release. */ |
| 9 | +const MONGOSH_RELEASE_PACKAGES = ['mongosh', '@mongosh/cli-repl']; |
| 10 | + |
| 11 | +/** This bumps only the main mongosh release packages to the set version. */ |
| 12 | +export async function bumpMongosh(version: string): Promise<void> { |
| 13 | + console.info(`mongosh: Bumping package versions to ${version}`); |
| 14 | + const monorepoRootPath = path.resolve(__dirname, '..', '..', '..', '..'); |
| 15 | + const packages = await getPackagesInTopologicalOrder(monorepoRootPath); |
| 16 | + |
| 17 | + const workspaceNames = packages |
| 18 | + .map((p) => p.name) |
| 19 | + .filter((name) => MONGOSH_RELEASE_PACKAGES.includes(name)); |
| 20 | + |
| 21 | + const locations = [monorepoRootPath, ...packages.map((p) => p.location)]; |
| 22 | + |
| 23 | + for (const location of locations) { |
| 24 | + const packageJsonPath = path.join(location, 'package.json'); |
| 25 | + const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf8')); |
| 26 | + |
| 27 | + packageJson.version = version; |
| 28 | + for (const grouping of [ |
| 29 | + 'dependencies', |
| 30 | + 'devDependencies', |
| 31 | + 'optionalDependencies', |
| 32 | + 'peerDependencies', |
| 33 | + ]) { |
| 34 | + if (!packageJson[grouping]) { |
| 35 | + continue; |
| 36 | + } |
| 37 | + |
| 38 | + for (const name of Object.keys(packageJson[grouping])) { |
| 39 | + if (!workspaceNames.includes(name)) { |
| 40 | + continue; |
| 41 | + } |
| 42 | + packageJson[grouping][name] = version; |
| 43 | + } |
| 44 | + } |
| 45 | + |
| 46 | + await fs.writeFile( |
| 47 | + packageJsonPath, |
| 48 | + JSON.stringify(packageJson, null, 2) + '\n' |
| 49 | + ); |
| 50 | + } |
| 51 | +} |
| 52 | + |
| 53 | +/** Bump packages without setting a new version of mongosh. */ |
6 | 54 | export function bumpNpmPackages() { |
7 | | - spawnSync('npx', ['bump-monorepo-packages'], { |
| 55 | + spawnSync('bump-monorepo-packages', [], { |
8 | 56 | stdio: 'inherit', |
9 | 57 | cwd: PROJECT_ROOT, |
10 | 58 | encoding: 'utf8', |
11 | 59 | env: { |
12 | 60 | ...process.env, |
13 | | - SKIP_BUMP_PACKAGES: PACKAGES_TO_SKIP_BUMPING.join(','), |
| 61 | + SKIP_BUMP_PACKAGES: MONGOSH_RELEASE_PACKAGES.join(','), |
14 | 62 | }, |
15 | 63 | }); |
16 | 64 | } |
0 commit comments