diff options
| author | Brandon Keiji <[email protected]> | 2025-04-21 23:11:51 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-04-21 23:11:51 -0700 |
| commit | 79710375e3477ec821aa889c02eb64f2529440af (patch) | |
| tree | 51552ebfba9606bf82aad079bc3b9a31452b51d7 /scripts/bind_package_dependencies.js | |
| parent | 98fa8d2b5134dd919dffb7cb68a3f97dad0b159f (diff) | |
fix: point npmrc to dogfood artifact registry (#108)
Diffstat (limited to 'scripts/bind_package_dependencies.js')
| -rw-r--r-- | scripts/bind_package_dependencies.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/bind_package_dependencies.js b/scripts/bind_package_dependencies.js new file mode 100644 index 00000000..eb9a4cc6 --- /dev/null +++ b/scripts/bind_package_dependencies.js @@ -0,0 +1,50 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import fs from 'node:fs'; +import path from 'node:path'; +import _ from 'lodash'; + +function bindPackageDependencies() { + const scriptDir = process.cwd(); + const currentPkgJsonPath = path.join(scriptDir, 'package.json'); + const currentPkg = JSON.parse(fs.readFileSync(currentPkgJsonPath)); + // assume packages are all under /<repo_root>/packages/ + const packagesDir = path.join(path.dirname(scriptDir)); + + const geminiCodePkgs = fs + .readdirSync(packagesDir) + .filter( + (name) => + fs.statSync(path.join(packagesDir, name)).isDirectory() && + fs.existsSync(path.join(packagesDir, name, 'package.json')), + ) + .map((packageDirname) => { + const packageJsonPath = path.join( + packagesDir, + packageDirname, + 'package.json', + ); + return JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); + }) + .reduce((pkgs, pkg) => ({ ...pkgs, [pkg.name]: pkg }), {}); + currentPkg.dependencies = _.mapValues( + currentPkg.dependencies, + (value, key) => { + if (geminiCodePkgs[key]) { + console.log( + `Package ${currentPkg.name} has a dependency on ${key}. Updating dependent version.`, + ); + return geminiCodePkgs[key].version; + } + return value; + }, + ); + const updatedPkgJson = JSON.stringify(currentPkg, null, 2) + '\n'; + fs.writeFileSync(currentPkgJsonPath, updatedPkgJson); +} + +bindPackageDependencies(); |
