summaryrefslogtreecommitdiff
path: root/scripts/prepare-cli-packagejson.js
diff options
context:
space:
mode:
authorBrandon Keiji <[email protected]>2025-05-29 21:01:44 +0000
committerGitHub <[email protected]>2025-05-29 14:01:44 -0700
commitdc94a03f39c712a0bb9b4ab0de7bac0e29c2b12e (patch)
tree5a8fa670e56ac258684e61b98b500f1a0f798d9f /scripts/prepare-cli-packagejson.js
parent6a1b94529bd39370b81313e49b51679377416160 (diff)
feat: publish root Dockerfile to our image registry (#599)
Diffstat (limited to 'scripts/prepare-cli-packagejson.js')
-rw-r--r--scripts/prepare-cli-packagejson.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/scripts/prepare-cli-packagejson.js b/scripts/prepare-cli-packagejson.js
new file mode 100644
index 00000000..8e0efff1
--- /dev/null
+++ b/scripts/prepare-cli-packagejson.js
@@ -0,0 +1,66 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import fs from 'fs';
+import path from 'path';
+import { fileURLToPath } from 'url';
+
+// ES module equivalent of __dirname
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const cliPackageJsonPath = path.resolve(
+ __dirname,
+ '../packages/cli/package.json',
+);
+const cliPackageJson = JSON.parse(fs.readFileSync(cliPackageJsonPath, 'utf8'));
+
+// Get version from root package.json (accessible via env var in npm scripts)
+const version = process.env.npm_package_version;
+
+// Get Docker registry and image name directly from PUBLISH_ environment variables.
+// These are expected to be set by the CI/build environment.
+const dockerRegistry = process.env.SANDBOX_IMAGE_REGISTRY;
+const dockerImageName = process.env.SANDBOX_IMAGE_NAME;
+
+if (!version || !dockerRegistry || !dockerImageName) {
+ console.error(
+ 'Error: Missing required environment variables. Need: ' +
+ 'npm_package_version, SANDBOX_IMAGE_REGISTRY, and SANDBOX_IMAGE_NAME.',
+ );
+ console.error(
+ 'These should be passed from the CI environment (e.g., Cloud Build substitutions) ' +
+ 'to the npm publish:release script.',
+ );
+ process.exit(1);
+}
+
+const dockerImageUri = `${dockerRegistry}/${dockerImageName}:${version}`;
+
+// Add or update fields in cliPackageJson.config to store this information
+if (!cliPackageJson.config) {
+ cliPackageJson.config = {};
+}
+cliPackageJson.config.dockerImageUri = dockerImageUri;
+cliPackageJson.config.dockerRegistry = dockerRegistry;
+cliPackageJson.config.dockerImageName = dockerImageName;
+
+// Remove 'prepublishOnly' from scripts if it exists
+if (cliPackageJson.scripts && cliPackageJson.scripts.prepublishOnly) {
+ delete cliPackageJson.scripts.prepublishOnly;
+ console.log('Removed prepublishOnly script from packages/cli/package.json');
+}
+
+fs.writeFileSync(
+ cliPackageJsonPath,
+ JSON.stringify(cliPackageJson, null, 2) + '\n',
+);
+console.log(
+ `Updated ${path.relative(process.cwd(), cliPackageJsonPath)} with Docker image details:`,
+);
+console.log(` URI: ${dockerImageUri}`);
+console.log(` Registry: ${dockerRegistry}`);
+console.log(` Image Name: ${dockerImageName}`);