Add FLIPPER_PORTS env var to desktop app

Summary:
Part 3 and final part of adding customizable ports. To use this, the iOS / Android apps have to also be started with the same custom ports.

Example usage: `FLIPPER_PORTS=8189,8188 yarn start`

Reviewed By: passy

Differential Revision: D13801761

fbshipit-source-id: 3dd80a3001ed0855e54cc568fa94eb6fac5fc7f1
This commit is contained in:
John Knox
2019-01-25 06:29:05 -08:00
committed by Facebook Github Bot
parent e558d8a01a
commit dbb723f8a5
9 changed files with 124 additions and 27 deletions

View File

@@ -15,7 +15,11 @@ import {registerDeviceCallbackOnPlugins} from '../utils/onRegisterDevice.js';
import {recordSuccessMetric} from '../utils/metrics';
const adb = require('adbkit-fb');
function createDevice(adbClient, device): Promise<AndroidDevice> {
function createDevice(
adbClient: any,
device: any,
store: Store,
): Promise<AndroidDevice> {
return new Promise((resolve, reject) => {
const type =
device.type !== 'device' || device.id.startsWith('emulator')
@@ -28,7 +32,8 @@ function createDevice(adbClient, device): Promise<AndroidDevice> {
name = (await getRunningEmulatorName(device.id)) || name;
}
const androidDevice = new AndroidDevice(device.id, type, name, adbClient);
androidDevice.reverse();
const ports = store.getState().application.serverPorts;
androidDevice.reverse([ports.secure, ports.insecure]);
resolve(androidDevice);
});
});
@@ -127,7 +132,7 @@ export default (store: Store, logger: Logger) => {
tracker.on('add', async device => {
if (device.type !== 'offline') {
registerDevice(client, device);
registerDevice(client, device, store);
}
});
@@ -135,7 +140,7 @@ export default (store: Store, logger: Logger) => {
if (device.type === 'offline') {
unregisterDevices([device.id]);
} else {
registerDevice(client, device);
registerDevice(client, device, store);
}
});
@@ -156,8 +161,8 @@ export default (store: Store, logger: Logger) => {
});
};
async function registerDevice(adbClient: any, deviceData: any) {
const androidDevice = await createDevice(adbClient, deviceData);
async function registerDevice(adbClient: any, deviceData: any, store: Store) {
const androidDevice = await createDevice(adbClient, deviceData, store);
logger.track('usage', 'register-device', {
os: 'Android',
name: androidDevice.title,

View File

@@ -8,6 +8,7 @@
import {remote, ipcRenderer} from 'electron';
import type {Store} from '../reducers/index.js';
import type Logger from '../fb-stubs/Logger.js';
import {parseFlipperPorts} from '../utils/environmentVariables';
import {selectPlugin, userPreferredPlugin} from '../reducers/connections';
export const uriComponents = (url: string) => {
@@ -61,4 +62,14 @@ export default (store: Store, logger: Logger) => {
store.dispatch(userPreferredPlugin(match[1]));
}
});
if (process.env.FLIPPER_PORTS) {
const portOverrides = parseFlipperPorts(process.env.FLIPPER_PORTS);
if (portOverrides) {
store.dispatch({
type: 'SET_SERVER_PORTS',
payload: portOverrides,
});
}
}
};