Skip to content

Commit

Permalink
Use setProcessState
Browse files Browse the repository at this point in the history
Summary:
`setProcessState` does some adjusting to PATH. This was only ever done for Electron.

This change moves that functionality to FlipperServerImpl which is the one what orchestrates. By doing this, flipper server also benefits from getting these adjustments.

Reviewed By: antonk52

Differential Revision: D46836659

fbshipit-source-id: f98291d320cf9b7f3808223af8745c068b1318ce
  • Loading branch information
lblasa authored and facebook-github-bot committed Jun 19, 2023
1 parent b4f0657 commit 165a989
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 23 deletions.
23 changes: 0 additions & 23 deletions desktop/app/src/init.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ import {
Logger,
parseEnvironmentVariables,
setLoggerInstance,
Settings,
wrapRequire,
} from 'flipper-common';
import constants from './fb-stubs/constants';
Expand All @@ -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();
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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}`;
}
23 changes: 23 additions & 0 deletions desktop/flipper-server-core/src/FlipperServerImpl.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
FlipperServerExecOptions,
DeviceDebugData,
CertificateExchangeMedium,
Settings,
} from 'flipper-common';
import {ServerDevice} from './devices/ServerDevice';
import {Base64} from 'js-base64';
Expand Down Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 165a989

Please sign in to comment.