Organise files per device
Summary: Moved all logic per device type we support to its own dir, including tools and utilities around it, which makes it easier to consolidate logic and decouple in turn per device type. Per type, all logic can be found in `server/devices/(desktop|metro|android|ios|webapp)` Reviewed By: timur-valiev Differential Revision: D30277817 fbshipit-source-id: 2b5339c363d5d31ceeba07cec03826fc67cf3748
This commit is contained in:
committed by
Facebook GitHub Bot
parent
6175424d16
commit
c0cd32564a
@@ -11,7 +11,7 @@ import {Button} from '../ui';
|
||||
import React, {Component} from 'react';
|
||||
import {connect} from 'react-redux';
|
||||
import {State as Store} from '../reducers';
|
||||
import {launchJsEmulator} from '../server/utils/js-client-server-utils/serverUtils';
|
||||
import {launchJsEmulator} from '../server/devices/webapp/jsServerUtils';
|
||||
import {updateSettings, Action} from '../reducers/settings';
|
||||
import {Settings} from '../reducers/settings';
|
||||
import {Collapse, Form, Input as AntInput} from 'antd';
|
||||
|
||||
@@ -8,7 +8,9 @@
|
||||
*/
|
||||
|
||||
import React, {useCallback, useEffect, useState} from 'react';
|
||||
import MetroDevice, {MetroReportableEvent} from '../server/devices/MetroDevice';
|
||||
import MetroDevice, {
|
||||
MetroReportableEvent,
|
||||
} from '../server/devices/metro/MetroDevice';
|
||||
import {useStore} from '../utils/useStore';
|
||||
import {Button as AntButton} from 'antd';
|
||||
import {MenuOutlined, ReloadOutlined} from '@ant-design/icons';
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
import {remote} from 'electron';
|
||||
import MetroDevice from '../server/devices/MetroDevice';
|
||||
import MetroDevice from '../server/devices/metro/MetroDevice';
|
||||
import {Store} from '../reducers';
|
||||
|
||||
type ShortcutEventCommand =
|
||||
|
||||
@@ -38,10 +38,10 @@ export {default as BaseDevice} from './server/devices/BaseDevice';
|
||||
export {default as isProduction} from './utils/isProduction';
|
||||
export {DetailSidebar} from 'flipper-plugin';
|
||||
export {default as Device} from './server/devices/BaseDevice';
|
||||
export {default as AndroidDevice} from './server/devices/AndroidDevice';
|
||||
export {default as AndroidDevice} from './server/devices/android/AndroidDevice';
|
||||
export {default as ArchivedDevice} from './server/devices/ArchivedDevice';
|
||||
export {default as IOSDevice} from './server/devices/IOSDevice';
|
||||
export {default as KaiOSDevice} from './server/devices/KaiOSDevice';
|
||||
export {default as IOSDevice} from './server/devices/ios/IOSDevice';
|
||||
export {default as KaiOSDevice} from './server/devices/android/KaiOSDevice';
|
||||
export {OS} from './server/devices/BaseDevice';
|
||||
export {default as Button} from './ui/components/Button';
|
||||
export {default as ToggleButton} from './ui/components/ToggleSwitch';
|
||||
@@ -129,7 +129,7 @@ export {Rect} from './utils/geometry';
|
||||
export {Logger} from './fb-interfaces/Logger';
|
||||
export {getInstance as getLogger} from './fb-stubs/Logger';
|
||||
export {callVSCode} from './utils/vscodeUtils';
|
||||
export {checkIdbIsInstalled} from './server/utils/iOSContainerUtility';
|
||||
export {checkIdbIsInstalled} from './server/devices/ios/iOSContainerUtility';
|
||||
export {IDEFileResolver, IDEType} from './fb-stubs/IDEFileResolver';
|
||||
export {renderMockFlipperWithPlugin} from './test-utils/createMockFlipperWithPlugin';
|
||||
export {Tracked} from 'flipper-plugin'; // To be able to use it in legacy plugins
|
||||
|
||||
@@ -10,11 +10,8 @@
|
||||
import reducer from '../connections';
|
||||
import {State, selectPlugin} from '../connections';
|
||||
import BaseDevice from '../../server/devices/BaseDevice';
|
||||
import MacDevice from '../../server/devices/MacDevice';
|
||||
import {FlipperDevicePlugin} from '../../plugin';
|
||||
import MetroDevice from '../../server/devices/MetroDevice';
|
||||
import {TestUtils, _setFlipperLibImplementation} from 'flipper-plugin';
|
||||
import {wrapSandy} from '../../test-utils/createMockFlipperWithPlugin';
|
||||
import MetroDevice from '../../server/devices/metro/MetroDevice';
|
||||
import {_setFlipperLibImplementation} from 'flipper-plugin';
|
||||
import {createMockFlipperLib} from 'flipper-plugin/src/test-utils/test-utils';
|
||||
|
||||
beforeEach(() => {
|
||||
|
||||
@@ -11,7 +11,7 @@ import {ComponentType} from 'react';
|
||||
import {produce} from 'immer';
|
||||
|
||||
import type BaseDevice from '../server/devices/BaseDevice';
|
||||
import MacDevice from '../server/devices/MacDevice';
|
||||
import MacDevice from '../server/devices/desktop/MacDevice';
|
||||
import type Client from '../Client';
|
||||
import type {UninitializedClient} from '../UninitializedClient';
|
||||
import {isEqual} from 'lodash';
|
||||
@@ -23,7 +23,7 @@ import {getPluginKey} from '../utils/pluginKey';
|
||||
|
||||
import {deconstructClientId} from '../utils/clientUtils';
|
||||
import type {RegisterPluginAction} from './plugins';
|
||||
import MetroDevice from '../server/devices/MetroDevice';
|
||||
import MetroDevice from '../server/devices/metro/MetroDevice';
|
||||
import {Logger} from 'flipper-plugin';
|
||||
|
||||
export type StaticViewProps = {logger: Logger};
|
||||
|
||||
@@ -17,14 +17,14 @@ import {
|
||||
} from '@ant-design/icons';
|
||||
import {Store} from '../../reducers';
|
||||
import {useStore} from '../../utils/useStore';
|
||||
import {launchEmulator} from '../../server/devices/AndroidDevice';
|
||||
import {launchEmulator} from '../../server/devices/android/AndroidDevice';
|
||||
import {Layout, renderReactRoot, withTrackingScope} from 'flipper-plugin';
|
||||
import {Provider} from 'react-redux';
|
||||
import {
|
||||
launchSimulator,
|
||||
getSimulators,
|
||||
IOSDeviceParams,
|
||||
} from '../../server/iOSDevice';
|
||||
} from '../../server/devices/ios/iOSDeviceManager';
|
||||
import GK from '../../fb-stubs/GK';
|
||||
import {JSEmulatorLauncherSheetSandy} from '../../chrome/JSEmulatorLauncherSheet';
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ import {selectPlugin} from '../../reducers/connections';
|
||||
import Client from '../../Client';
|
||||
import BaseDevice from '../../server/devices/BaseDevice';
|
||||
import {DownloadablePluginDetails} from 'flipper-plugin-lib';
|
||||
import MetroDevice from '../../server/devices/MetroDevice';
|
||||
import MetroDevice from '../../server/devices/metro/MetroDevice';
|
||||
import {
|
||||
DownloadablePluginState,
|
||||
PluginDownloadStatus,
|
||||
|
||||
@@ -17,11 +17,11 @@ import {createRootReducer} from '../../../reducers';
|
||||
import {act} from 'react-dom/test-utils';
|
||||
import {sleep} from 'flipper-plugin';
|
||||
|
||||
jest.mock('../../../server/devices/AndroidDevice', () => ({
|
||||
jest.mock('../../../server/devices/android/AndroidDevice', () => ({
|
||||
launchEmulator: jest.fn(() => Promise.resolve([])),
|
||||
}));
|
||||
|
||||
import {launchEmulator} from '../../../server/devices/AndroidDevice';
|
||||
import {launchEmulator} from '../../../server/devices/android/AndroidDevice';
|
||||
|
||||
test('Can render and launch android apps', async () => {
|
||||
const store = createStore(createRootReducer());
|
||||
|
||||
@@ -12,12 +12,12 @@ import {
|
||||
MockFlipperResult,
|
||||
} from '../../../test-utils/createMockFlipperWithPlugin';
|
||||
import {FlipperPlugin} from '../../../plugin';
|
||||
import MetroDevice from '../../../server/devices/MetroDevice';
|
||||
import MetroDevice from '../../../server/devices/metro/MetroDevice';
|
||||
import BaseDevice from '../../../server/devices/BaseDevice';
|
||||
import {_SandyPluginDefinition} from 'flipper-plugin';
|
||||
import {TestUtils} from 'flipper-plugin';
|
||||
import {selectPlugin} from '../../../reducers/connections';
|
||||
import {registerMetroDevice} from '../../../server/metroDevice';
|
||||
import {registerMetroDevice} from '../../../server/devices/metro/metroDeviceManager';
|
||||
import {
|
||||
addGatekeepedPlugins,
|
||||
registerMarketplacePlugins,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import MetroDevice from '../server/devices/MetroDevice';
|
||||
import MetroDevice from '../server/devices/metro/MetroDevice';
|
||||
import {State} from '../reducers';
|
||||
import {
|
||||
computePluginLists,
|
||||
|
||||
@@ -19,10 +19,10 @@ import {isLoggedIn} from '../fb-stubs/user';
|
||||
import React from 'react';
|
||||
import {Typography} from 'antd';
|
||||
import {ACTIVE_SHEET_SIGN_IN, setActiveSheet} from '../reducers/application';
|
||||
import androidDevice from './androidDevice';
|
||||
import iOSDevice from './iOSDevice';
|
||||
import metroDevice from './metroDevice';
|
||||
import desktopDevice from './desktopDevice';
|
||||
import androidDevice from './devices/android/androidDeviceManager';
|
||||
import iOSDevice from './devices/ios/iOSDeviceManager';
|
||||
import metroDevice from './devices/metro/metroDeviceManager';
|
||||
import desktopDevice from './devices/desktop/desktopDeviceManager';
|
||||
import BaseDevice from './devices/BaseDevice';
|
||||
|
||||
type FlipperServerEvents = {
|
||||
|
||||
@@ -19,9 +19,9 @@ import {reportPlatformFailures} from '../../utils/metrics';
|
||||
import {EventEmitter} from 'events';
|
||||
import invariant from 'invariant';
|
||||
import GK from '../../fb-stubs/GK';
|
||||
import {initJsEmulatorIPC} from '../utils/js-client-server-utils/serverUtils';
|
||||
import {initJsEmulatorIPC} from '../devices/webapp/jsServerUtils';
|
||||
import {buildClientId} from '../../utils/clientUtils';
|
||||
import JSDevice from '../../server/devices/JSDevice';
|
||||
import JSDevice from '../devices/webapp/JSDevice';
|
||||
import DummyDevice from '../../server/devices/DummyDevice';
|
||||
import BaseDevice from '../../server/devices/BaseDevice';
|
||||
import {sideEffect} from '../../utils/sideEffect';
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import BaseDevice from './BaseDevice';
|
||||
import BaseDevice from '../BaseDevice';
|
||||
import adb, {Client as ADBClient} from 'adbkit';
|
||||
import {Priority, Reader} from 'adbkit-logcat';
|
||||
import {createWriteStream} from 'fs';
|
||||
@@ -7,10 +7,10 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {reportPlatformFailures} from '../../utils/metrics';
|
||||
import {reportPlatformFailures} from '../../../utils/metrics';
|
||||
import {execFile} from 'promisify-child-process';
|
||||
import promiseRetry from 'promise-retry';
|
||||
import adbConfig from '../utils/adbConfig';
|
||||
import adbConfig from './adbConfig';
|
||||
import adbkit, {Client} from 'adbkit';
|
||||
import path from 'path';
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {parseEnvironmentVariableAsNumber} from './environmentVariables';
|
||||
import {parseEnvironmentVariableAsNumber} from '../../utils/environmentVariables';
|
||||
|
||||
export default () => {
|
||||
let port = parseEnvironmentVariableAsNumber(
|
||||
@@ -12,7 +12,7 @@
|
||||
* opaque types will ensure the commands are only ever run on validated
|
||||
* arguments.
|
||||
*/
|
||||
import {UnsupportedError} from '../../utils/metrics';
|
||||
import {UnsupportedError} from '../../../utils/metrics';
|
||||
import adbkit, {Client} from 'adbkit';
|
||||
|
||||
const allowedAppNameRegex = /^[\w.-]+$/;
|
||||
@@ -7,19 +7,19 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import AndroidDevice from '../server/devices/AndroidDevice';
|
||||
import KaiOSDevice from '../server/devices/KaiOSDevice';
|
||||
import AndroidDevice from './AndroidDevice';
|
||||
import KaiOSDevice from './KaiOSDevice';
|
||||
import child_process from 'child_process';
|
||||
import {Store} from '../reducers/index';
|
||||
import BaseDevice from '../server/devices/BaseDevice';
|
||||
import {Logger} from '../fb-interfaces/Logger';
|
||||
import {getAdbClient} from '../server/utils/adbClient';
|
||||
import {Store} from '../../../reducers/index';
|
||||
import BaseDevice from '../BaseDevice';
|
||||
import {Logger} from '../../../fb-interfaces/Logger';
|
||||
import {getAdbClient} from './adbClient';
|
||||
import which from 'which';
|
||||
import {promisify} from 'util';
|
||||
import {ServerPorts} from '../reducers/application';
|
||||
import {ServerPorts} from '../../../reducers/application';
|
||||
import {Client as ADBClient} from 'adbkit';
|
||||
import {addErrorNotification} from '../reducers/notifications';
|
||||
import {destroyDevice} from '../reducers/connections';
|
||||
import {addErrorNotification} from '../../../reducers/notifications';
|
||||
import {destroyDevice} from '../../../reducers/connections';
|
||||
import {join} from 'path';
|
||||
|
||||
function createDevice(
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import BaseDevice from './BaseDevice';
|
||||
import BaseDevice from '../BaseDevice';
|
||||
|
||||
export default class MacDevice extends BaseDevice {
|
||||
constructor() {
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import BaseDevice from './BaseDevice';
|
||||
import BaseDevice from '../BaseDevice';
|
||||
|
||||
export default class WindowsDevice extends BaseDevice {
|
||||
constructor() {
|
||||
@@ -7,9 +7,9 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import MacDevice from '../server/devices/MacDevice';
|
||||
import WindowsDevice from '../server/devices/WindowsDevice';
|
||||
import {FlipperServer} from './FlipperServer';
|
||||
import MacDevice from './MacDevice';
|
||||
import WindowsDevice from './WindowsDevice';
|
||||
import {FlipperServer} from '../../FlipperServer';
|
||||
|
||||
export default (flipperServer: FlipperServer) => {
|
||||
let device;
|
||||
@@ -13,7 +13,7 @@ import {DeviceType} from 'flipper-plugin-lib';
|
||||
import {v1 as uuid} from 'uuid';
|
||||
import path from 'path';
|
||||
import {exec} from 'promisify-child-process';
|
||||
import {getAppTempPath} from '../../utils/pathUtils';
|
||||
import {getAppTempPath} from '../../../utils/pathUtils';
|
||||
|
||||
export const ERR_NO_IDB_OR_XCODE_AVAILABLE =
|
||||
'Neither Xcode nor idb available. Cannot provide iOS device functionality.';
|
||||
@@ -9,14 +9,11 @@
|
||||
|
||||
import {LogLevel, DeviceLogEntry, DeviceType, timeout} from 'flipper-plugin';
|
||||
import child_process, {ChildProcess} from 'child_process';
|
||||
import BaseDevice from './BaseDevice';
|
||||
import BaseDevice from '../BaseDevice';
|
||||
import JSONStream from 'JSONStream';
|
||||
import {Transform} from 'stream';
|
||||
import {exec} from 'promisify-child-process';
|
||||
import {
|
||||
ERR_PHYSICAL_DEVICE_LOGS_WITHOUT_IDB,
|
||||
IOSBridge,
|
||||
} from '../utils/IOSBridge';
|
||||
import {ERR_PHYSICAL_DEVICE_LOGS_WITHOUT_IDB, IOSBridge} from './IOSBridge';
|
||||
import split2 from 'split2';
|
||||
|
||||
type IOSLogLevel = 'Default' | 'Info' | 'Debug' | 'Error' | 'Fault';
|
||||
@@ -10,11 +10,11 @@
|
||||
import {
|
||||
parseXcodeFromCoreSimPath,
|
||||
getAllPromisesForQueryingDevices,
|
||||
} from '../iOSDevice';
|
||||
} from '../iOSDeviceManager';
|
||||
import configureStore from 'redux-mock-store';
|
||||
import {State, createRootReducer} from '../../reducers/index';
|
||||
import {getInstance} from '../../fb-stubs/Logger';
|
||||
import {IOSBridge} from '../../server/utils/IOSBridge';
|
||||
import {State, createRootReducer} from '../../../../reducers/index';
|
||||
import {getInstance} from '../../../../fb-stubs/Logger';
|
||||
import {IOSBridge} from '../IOSBridge';
|
||||
|
||||
const mockStore = configureStore<State, {}>([])(
|
||||
createRootReducer()(undefined, {type: 'INIT'}),
|
||||
@@ -10,16 +10,16 @@
|
||||
import React from 'react';
|
||||
import {Mutex} from 'async-mutex';
|
||||
import {exec as unsafeExec, Output} from 'promisify-child-process';
|
||||
import {killOrphanedInstrumentsProcesses} from './processCleanup';
|
||||
import {reportPlatformFailures} from '../../utils/metrics';
|
||||
import {killOrphanedInstrumentsProcesses} from '../../utils/processCleanup';
|
||||
import {reportPlatformFailures} from '../../../utils/metrics';
|
||||
import {promises, constants} from 'fs';
|
||||
import memoize from 'lodash.memoize';
|
||||
import {notNull} from './typeUtils';
|
||||
import {notNull} from '../../utils/typeUtils';
|
||||
import {promisify} from 'util';
|
||||
import child_process from 'child_process';
|
||||
import fs from 'fs-extra';
|
||||
import path from 'path';
|
||||
import fbConfig from '../../fb-stubs/config';
|
||||
import fbConfig from '../../../fb-stubs/config';
|
||||
import {notification, Typography} from 'antd';
|
||||
const exec = promisify(child_process.exec);
|
||||
|
||||
@@ -8,24 +8,24 @@
|
||||
*/
|
||||
|
||||
import {ChildProcess} from 'child_process';
|
||||
import {Store} from '../reducers/index';
|
||||
import {setXcodeDetected} from '../reducers/application';
|
||||
import {Logger} from '../fb-interfaces/Logger';
|
||||
import {Store} from '../../../reducers/index';
|
||||
import {setXcodeDetected} from '../../../reducers/application';
|
||||
import {Logger} from '../../../fb-interfaces/Logger';
|
||||
import type {DeviceType} from 'flipper-plugin';
|
||||
import {promisify} from 'util';
|
||||
import path from 'path';
|
||||
import child_process from 'child_process';
|
||||
const execFile = child_process.execFile;
|
||||
import iosUtil from '../server/utils/iOSContainerUtility';
|
||||
import IOSDevice from '../server/devices/IOSDevice';
|
||||
import {addErrorNotification} from '../reducers/notifications';
|
||||
import {getStaticPath} from '../utils/pathUtils';
|
||||
import {destroyDevice} from '../reducers/connections';
|
||||
import iosUtil from './iOSContainerUtility';
|
||||
import IOSDevice from './IOSDevice';
|
||||
import {addErrorNotification} from '../../../reducers/notifications';
|
||||
import {getStaticPath} from '../../../utils/pathUtils';
|
||||
import {destroyDevice} from '../../../reducers/connections';
|
||||
import {
|
||||
ERR_NO_IDB_OR_XCODE_AVAILABLE,
|
||||
IOSBridge,
|
||||
makeIOSBridge,
|
||||
} from '../server/utils/IOSBridge';
|
||||
} from './IOSBridge';
|
||||
|
||||
type iOSSimulatorDevice = {
|
||||
state: 'Booted' | 'Shutdown' | 'Shutting Down';
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
import {LogLevel} from 'flipper-plugin';
|
||||
import BaseDevice from './BaseDevice';
|
||||
import BaseDevice from '../BaseDevice';
|
||||
import {EventEmitter} from 'events';
|
||||
import util from 'util';
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {Store} from '../reducers/index';
|
||||
import {Logger} from '../fb-interfaces/Logger';
|
||||
import MetroDevice from '../server/devices/MetroDevice';
|
||||
import {Store} from '../../../reducers/index';
|
||||
import {Logger} from '../../../fb-interfaces/Logger';
|
||||
import MetroDevice from './MetroDevice';
|
||||
import http from 'http';
|
||||
import {addErrorNotification} from '../reducers/notifications';
|
||||
import {destroyDevice} from '../reducers/connections';
|
||||
import {parseEnvironmentVariableAsNumber} from '../server/utils/environmentVariables';
|
||||
import {addErrorNotification} from '../../../reducers/notifications';
|
||||
import {destroyDevice} from '../../../reducers/connections';
|
||||
import {parseEnvironmentVariableAsNumber} from '../../utils/environmentVariables';
|
||||
|
||||
const METRO_HOST = 'localhost';
|
||||
const METRO_PORT = parseEnvironmentVariableAsNumber('METRO_SERVER_PORT', 8081);
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import BaseDevice from './BaseDevice';
|
||||
import BaseDevice from '../BaseDevice';
|
||||
|
||||
export default class JSDevice extends BaseDevice {
|
||||
webContentsId: number;
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
ResponseType,
|
||||
} from '../../comms/ClientConnection';
|
||||
import {ipcRenderer, remote, IpcRendererEvent} from 'electron';
|
||||
import JSDevice from '../../devices/JSDevice';
|
||||
import JSDevice from './JSDevice';
|
||||
import {Store} from '../../../reducers';
|
||||
import {Logger} from '../../../fb-interfaces/Logger';
|
||||
import ServerController from '../../comms/ServerController';
|
||||
@@ -20,10 +20,10 @@ import {
|
||||
} from './openssl-wrapper-with-promises';
|
||||
import path from 'path';
|
||||
import tmp, {DirOptions, FileOptions} from 'tmp';
|
||||
import iosUtil from './iOSContainerUtility';
|
||||
import iosUtil from '../devices/ios/iOSContainerUtility';
|
||||
import {reportPlatformFailures} from '../../utils/metrics';
|
||||
import {getAdbClient} from './adbClient';
|
||||
import * as androidUtil from './androidContainerUtility';
|
||||
import {getAdbClient} from '../devices/android/adbClient';
|
||||
import * as androidUtil from '../devices/android/androidContainerUtility';
|
||||
import os from 'os';
|
||||
import {Client as ADBClient} from 'adbkit';
|
||||
import archiver from 'archiver';
|
||||
|
||||
Reference in New Issue
Block a user