UNPKG

firebase-tools

Version:
48 lines (47 loc) • 2.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.prepare = prepare; const error_1 = require("../../error"); const utils_1 = require("../../utils"); const buildEnv_1 = require("./buildEnv"); const prereqs_1 = require("./prereqs"); const util_1 = require("./util"); async function prepare(context, options, payload) { const configs = (0, util_1.getServiceConfigs)(options); if (!configs.length) { return; } await (0, prereqs_1.prereqs)(context.projectId); payload.run = { services: [] }; for (const config of configs) { payload.run.services.push(await prepareService(context, config)); } } async function prepareService(context, config) { const { serviceId, region } = config; const existing = await (0, util_1.getExistingService)(context.projectId, region, serviceId); let baseImage = (0, util_1.mainContainer)(existing?.template)?.baseImageUri; if (context.baseImage !== undefined) { baseImage = context.baseImage ?? undefined; } if (config.localBuild && !baseImage) { const fix = existing ? `firebase run:services:update ${serviceId} --region ${region} --base-image <baseImage>` : "firebase init run"; throw new error_1.FirebaseError(`Local builds require a base image. Set one for service ${serviceId} in ${region} with "${fix}".`); } const buildEnv = (0, buildEnv_1.getBuildEnv)(existing); const secrets = (0, buildEnv_1.secretNames)(buildEnv); if (secrets.length && !config.localBuild) { throw new error_1.FirebaseError(`Service ${serviceId} in ${region} has build secrets (${secrets.join(", ")}), but only ` + `local builds can use secrets: builds on Cloud Build only take plain values. To use ` + `them, set "localBuild": true for this service in firebase.json.`); } const svc = { config, existing, baseImage }; if (Object.keys(buildEnv).length) { (0, utils_1.logLabeledBullet)("run", `Using build environment variables for service ${serviceId} in ${region} from ` + `${buildEnv_1.BUILD_ENV_ANNOTATION}: ${Object.keys(buildEnv).join(", ")}`); svc.buildEnv = buildEnv; } return svc; }