diff --git a/desktop/app/src/init.tsx b/desktop/app/src/init.tsx index 5d268a82578..82475383de1 100644 --- a/desktop/app/src/init.tsx +++ b/desktop/app/src/init.tsx @@ -39,7 +39,6 @@ import { Logger, parseEnvironmentVariables, setLoggerInstance, - Settings, wrapRequire, } from 'flipper-common'; import constants from './fb-stubs/constants'; @@ -53,7 +52,6 @@ import {initCompanionEnv} from 'flipper-server-companion'; import ReconnectingWebSocket from 'reconnecting-websocket'; import WS from 'ws'; import {Module} from 'module'; -import os from 'os'; Module.prototype.require = wrapRequire(Module.prototype.require); enableMapSet(); @@ -242,8 +240,6 @@ async function start() { electronIpcClient, ); - setProcessState(flipperServerConfig.settings); - // By turning this in a require, we force the JS that the body of this module (init) has completed (initializeElectron), // before starting the rest of the Flipper process. // This prevent issues where the render host is referred at module initialisation level, @@ -332,22 +328,3 @@ function createDelegatedLogger(): Logger { }, }; } - -function setProcessState(settings: Settings) { - const androidHome = settings.androidHome; - const idbPath = settings.idbPath; - - if (!process.env.ANDROID_HOME && !process.env.ANDROID_SDK_ROOT) { - process.env.ANDROID_HOME = androidHome; - process.env.ANDROID_SDK_ROOT = androidHome; - } - - // emulator/emulator is more reliable than tools/emulator, so prefer it if - // it exists - process.env.PATH = - ['emulator', 'tools', 'platform-tools'] - .map((directory) => path.resolve(androidHome, directory)) - .join(':') + - `:${idbPath}` + - `:${process.env.PATH}`; -} diff --git a/desktop/flipper-server-core/src/FlipperServerImpl.tsx b/desktop/flipper-server-core/src/FlipperServerImpl.tsx index 6aca92a11a3..8cfe798c1ba 100644 --- a/desktop/flipper-server-core/src/FlipperServerImpl.tsx +++ b/desktop/flipper-server-core/src/FlipperServerImpl.tsx @@ -26,6 +26,7 @@ import { FlipperServerExecOptions, DeviceDebugData, CertificateExchangeMedium, + Settings, } from 'flipper-common'; import {ServerDevice} from './devices/ServerDevice'; import {Base64} from 'js-base64'; @@ -56,6 +57,7 @@ import {mkdirp} from 'fs-extra'; import {flipperDataFolder, flipperSettingsFolder} from './utils/paths'; import {DebuggableDevice} from './devices/DebuggableDevice'; import {jfUpload} from './fb-stubs/jf'; +import path from 'path'; const {access, copyFile, mkdir, unlink, stat, readlink, readFile, writeFile} = promises; @@ -68,6 +70,25 @@ function isHandledStartupError(e: Error) { return false; } +function setProcessState(settings: Settings) { + const androidHome = settings.androidHome; + const idbPath = settings.idbPath; + + if (!process.env.ANDROID_HOME && !process.env.ANDROID_SDK_ROOT) { + process.env.ANDROID_HOME = androidHome; + process.env.ANDROID_SDK_ROOT = androidHome; + } + + // emulator/emulator is more reliable than tools/emulator, so prefer it if + // it exists + process.env.PATH = + ['emulator', 'tools', 'platform-tools'] + .map((directory) => path.resolve(androidHome, directory)) + .join(':') + + `:${idbPath}` + + `:${process.env.PATH}`; +} + /** * FlipperServer takes care of all incoming device & client connections. * It will set up managers per device type, and create the incoming @@ -99,6 +120,8 @@ export class FlipperServerImpl implements FlipperServer { console.log( 'Loaded flipper config, paths: ' + JSON.stringify(config.paths, null, 2), ); + + setProcessState(config.settings); const server = (this.server = new ServerController(this)); this.keytarManager = new KeytarManager(keytarModule); // given flipper-dump, it might make more sense to have the plugin command