UNPKG

firebase-tools

Version:
65 lines (64 loc) 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AdditionalInitFns = void 0; const path_1 = require("path"); const prompt_1 = require("../prompt"); const developmentServer_1 = require("./apphosting/developmentServer"); const emulatorLogger_1 = require("./emulatorLogger"); const types_1 = require("./types"); const config_1 = require("../apphosting/config"); const detectProjectRoot_1 = require("../detectProjectRoot"); exports.AdditionalInitFns = { [types_1.Emulators.APPHOSTING]: async () => { var _a; const cwd = process.cwd(); const additionalConfigs = new Map(); const logger = emulatorLogger_1.EmulatorLogger.forEmulator(types_1.Emulators.APPHOSTING); logger.logLabeled("INFO", "Initializing Emulator"); const backendRelativeDir = await (0, prompt_1.promptOnce)({ name: "rootDir", type: "input", default: "./", message: "Specify your app's root directory relative to your repository", }); additionalConfigs.set("rootDirectory", backendRelativeDir); const backendRoot = (0, path_1.join)(cwd, backendRelativeDir); try { const startCommand = await (0, developmentServer_1.detectStartCommand)(backendRoot); additionalConfigs.set("startCommand", startCommand); } catch (e) { logger.log("WARN", "Failed to auto-detect your project's start command. Consider manually setting the start command by setting `firebase.json#emulators.apphosting.startCommand`"); } try { const projectRoot = (_a = (0, detectProjectRoot_1.detectProjectRoot)({})) !== null && _a !== void 0 ? _a : backendRoot; await (0, config_1.exportConfig)(cwd, projectRoot, backendRoot); } catch (e) { logger.log("WARN", "failed to export app hosting configs"); } return mapToObject(additionalConfigs); }, [types_1.Emulators.DATACONNECT]: async (config) => { const additionalConfig = {}; const defaultDataConnectDir = config.get("dataconnect.source", "dataconnect"); const defaultDataDir = config.get("emulators.dataconnect.dataDir", `${defaultDataConnectDir}/.dataconnect/pgliteData`); if (await (0, prompt_1.promptOnce)({ name: "dataDir", type: "confirm", message: "Do you want to persist Postgres data from the Data Connect emulator between runs? " + `Data will be saved to ${defaultDataDir}. ` + `You can change this directory by editing 'firebase.json#emulators.dataconnect.dataDir'.`, })) { additionalConfig["dataDir"] = defaultDataDir; } return additionalConfig; }, }; function mapToObject(map) { const newObject = {}; for (const [key, value] of map) { newObject[key] = value; } return newObject; }