diff --git a/firebase-vscode/CHANGELOG.md b/firebase-vscode/CHANGELOG.md index 087ae962c28..d72a3348247 100644 --- a/firebase-vscode/CHANGELOG.md +++ b/firebase-vscode/CHANGELOG.md @@ -1,5 +1,7 @@ ## NEXT +- [Fixed] Emulator settings updates are now properly recognized + ## 1.5.1 - Update internal `firebase-tools` dependency to 14.11.0 diff --git a/firebase-vscode/src/analytics.ts b/firebase-vscode/src/analytics.ts index 1372f4fcf86..0243446f96a 100644 --- a/firebase-vscode/src/analytics.ts +++ b/firebase-vscode/src/analytics.ts @@ -224,6 +224,5 @@ export function getAnalyticsContext(context: vscode.ExtensionContext) { } function addFirebaseBinaryMetadata(data?: Record | undefined) { - const settings = getSettings(); - return { ...data, binary_kind: settings.firebaseBinaryKind }; + return { ...data, binary_kind: getSettings().firebaseBinaryKind }; } diff --git a/firebase-vscode/src/core/emulators.ts b/firebase-vscode/src/core/emulators.ts index 67acbf235dd..e440d59fca6 100644 --- a/firebase-vscode/src/core/emulators.ts +++ b/firebase-vscode/src/core/emulators.ts @@ -168,8 +168,7 @@ export class EmulatorsController implements Disposable { } async exportEmulatorData(): Promise { - const settings = getSettings(); - const exportDir = settings.exportPath; + const exportDir = getSettings().exportPath; const hubClient = this.getHubClient(); if (hubClient) { // TODO: Make exportDir configurable diff --git a/firebase-vscode/src/core/index.ts b/firebase-vscode/src/core/index.ts index 1b70508edd1..f4514a8a387 100644 --- a/firebase-vscode/src/core/index.ts +++ b/firebase-vscode/src/core/index.ts @@ -31,7 +31,6 @@ export async function registerCore( "init", async () => {}, ); - if (settings.npmPath) { process.env.PATH += `:${settings.npmPath}`; } @@ -66,6 +65,8 @@ export async function registerCore( ); return; } + + const settings = getSettings(); // ensure updated values const initCommand = currentProjectId.value ? `${settings.firebasePath} init dataconnect --project ${currentProjectId.value}` : `${settings.firebasePath} init dataconnect`; diff --git a/firebase-vscode/src/data-connect/deploy.ts b/firebase-vscode/src/data-connect/deploy.ts index e15877503e7..fdcc8fdb7f7 100644 --- a/firebase-vscode/src/data-connect/deploy.ts +++ b/firebase-vscode/src/data-connect/deploy.ts @@ -30,8 +30,6 @@ export function registerFdcDeploy( broker: ExtensionBrokerImpl, analyticsLogger: AnalyticsLogger, ): vscode.Disposable { - const settings = getSettings(); - const deploySpy = createE2eMockable( async (...args: Parameters) => { // Have the "deploy" return "void" for easier mocking (no return value when spied). @@ -43,7 +41,7 @@ export function registerFdcDeploy( const deployAllCmd = vscode.commands.registerCommand("fdc.deploy-all", () => { analyticsLogger.logger.logUsage(DATA_CONNECT_EVENT_NAME.DEPLOY_ALL); - deploySpy.call(`${settings.firebasePath} deploy --only dataconnect`); + deploySpy.call(`${getSettings().firebasePath} deploy --only dataconnect`); }); const deployCmd = vscode.commands.registerCommand("fdc.deploy", async () => { @@ -65,7 +63,7 @@ export function registerFdcDeploy( } deploySpy.call( - `${settings.firebasePath} ${createDeployOnlyCommand(serviceConnectorMap)}`, + `${getSettings().firebasePath} ${createDeployOnlyCommand(serviceConnectorMap)}`, ); // run from terminal }); diff --git a/firebase-vscode/src/data-connect/sdk-generation.ts b/firebase-vscode/src/data-connect/sdk-generation.ts index 476d491c91e..0a63501e2a4 100644 --- a/firebase-vscode/src/data-connect/sdk-generation.ts +++ b/firebase-vscode/src/data-connect/sdk-generation.ts @@ -22,8 +22,6 @@ export function registerFdcSdkGeneration( broker: ExtensionBrokerImpl, analyticsLogger: AnalyticsLogger, ): vscode.Disposable { - const settings = getSettings(); - // For testing purposes. const selectFolderSpy = createE2eMockable( async () => { @@ -43,7 +41,7 @@ export function registerFdcSdkGeneration( const e: Record = {} e[FDC_APP_FOLDER] = args.appFolder; setTerminalEnvVars(e); - runCommand(`${settings.firebasePath} init dataconnect:sdk`); + runCommand(`${getSettings().firebasePath} init dataconnect:sdk`); }, ); diff --git a/firebase-vscode/src/data-connect/terminal.ts b/firebase-vscode/src/data-connect/terminal.ts index eefda43b302..e35323a98bc 100644 --- a/firebase-vscode/src/data-connect/terminal.ts +++ b/firebase-vscode/src/data-connect/terminal.ts @@ -12,7 +12,7 @@ const executionOptions: vscode.ShellExecutionOptions = { }; export function setTerminalEnvVars(env: Record) { - environmentVariables = {...environmentVariables, ...env}; + environmentVariables = { ...environmentVariables, ...env }; } export function runCommand(command: string) { @@ -42,8 +42,7 @@ export function runTerminalTask( command: string, presentationOptions: vscode.TaskPresentationOptions = { focus: true }, ): Promise { - const settings = getSettings(); - setTerminalEnvVars(settings.extraEnv ?? {}); + setTerminalEnvVars(getSettings().extraEnv ?? {}); const type = "firebase-" + Date.now(); return new Promise(async (resolve, reject) => { vscode.tasks.onDidEndTaskProcess(async (e) => { @@ -66,7 +65,10 @@ export function runTerminalTask( vscode.TaskScope.Workspace, taskName, "firebase", - new vscode.ShellExecution(`${command}${settings.debug ? " --debug" : ""}`, executionOptions), + new vscode.ShellExecution( + `${command}${getSettings().debug ? " --debug" : ""}`, + executionOptions, + ), ); task.presentationOptions = presentationOptions; await vscode.tasks.executeTask(task); @@ -77,13 +79,11 @@ export function registerTerminalTasks( broker: ExtensionBrokerImpl, analyticsLogger: AnalyticsLogger, ): Disposable { - const settings = getSettings(); - const loginTaskBroker = broker.on("executeLogin", () => { analyticsLogger.logger.logUsage(DATA_CONNECT_EVENT_NAME.IDX_LOGIN); runTerminalTask( "firebase login", - `${settings.firebasePath} login --no-localhost`, + `${getSettings().firebasePath} login --no-localhost`, ).then(() => { checkLogin(); }); @@ -91,7 +91,7 @@ export function registerTerminalTasks( const startEmulatorsTask = () => { analyticsLogger.logger.logUsage(DATA_CONNECT_EVENT_NAME.START_EMULATORS); - + const settings = getSettings(); let cmd = `${settings.firebasePath} emulators:start --project ${currentProjectId.value}`; if (settings.importPath) { @@ -100,12 +100,10 @@ export function registerTerminalTasks( if (settings.exportOnExit) { cmd += ` --export-on-exit ${settings.exportPath}`; } - vscode.window.showInformationMessage("Starting emulators... Please see terminal."); - runTerminalTask( - "firebase emulators", - cmd, - { focus: true }, + vscode.window.showInformationMessage( + "Starting emulators... Please see terminal.", ); + runTerminalTask("firebase emulators", cmd, { focus: true }); }; const startEmulatorsTaskBroker = broker.on("runStartEmulators", () => { startEmulatorsTask(); diff --git a/firebase-vscode/src/data-connect/toolkit.ts b/firebase-vscode/src/data-connect/toolkit.ts index a307dbc5a48..78ea13a5080 100644 --- a/firebase-vscode/src/data-connect/toolkit.ts +++ b/firebase-vscode/src/data-connect/toolkit.ts @@ -37,7 +37,6 @@ export class DataConnectToolkit implements vscode.Disposable { // special function to start FDC emulator with special flags & port async startFDCToolkit(configDir: string, config: Config, RC: RC) { const port = await findOpenPort(DEFAULT_PORT); - const settings = getSettings(); const toolkitArgs: DataConnectEmulatorArgs = { projectId: "toolkit", @@ -48,7 +47,7 @@ export class DataConnectToolkit implements vscode.Disposable { autoconnectToPostgres: false, enable_output_generated_sdk: true, enable_output_schema_extensions: true, - extraEnv: settings.extraEnv, + extraEnv: getSettings().extraEnv, }; pluginLogger.info(`Starting Data Connect toolkit (version ${DataConnectToolkitController.getVersion()}) on port ${port}`); return DataConnectToolkitController.start(toolkitArgs); diff --git a/firebase-vscode/src/extension.ts b/firebase-vscode/src/extension.ts index f4daec6db29..ec054aca014 100644 --- a/firebase-vscode/src/extension.ts +++ b/firebase-vscode/src/extension.ts @@ -29,7 +29,6 @@ export async function activate(context: vscode.ExtensionContext) { await setupFirebasePath(analyticsLogger); - const settings = getSettings(); logSetup(); pluginLogger.debug("Activating Firebase extension."); @@ -42,7 +41,7 @@ export async function activate(context: vscode.ExtensionContext) { const authService = new AuthService(broker); // show IDX data collection notice - if (settings.shouldShowIdxMetricNotice && env.value.isMonospace) { + if (getSettings().shouldShowIdxMetricNotice && env.value.isMonospace) { // don't await/block on this vscode.window.showInformationMessage(IDX_METRIC_NOTICE, "Ok").then(() => { updateIdxSetting(false); // don't show message again