firebase-tools
Version:
Command-Line Interface for Firebase
48 lines (47 loc) • 2.24 kB
JavaScript
;
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;
}