Remove global access to adb client and idb config
Summary: Idb and adb sholuld not really be accessed out side of Adnroid and iOS device managers Reviewed By: lawrencelomax Differential Revision: D33915162 fbshipit-source-id: 0d1bb028b9a53254cf5b0ce6289ae76339c5a254
This commit is contained in:
committed by
Facebook GitHub Bot
parent
51ef1810b2
commit
c7492a83c7
@@ -46,8 +46,7 @@ import {promises} from 'fs';
|
|||||||
// Electron 11 runs on Node 12 which does not support fs.promises.rm
|
// Electron 11 runs on Node 12 which does not support fs.promises.rm
|
||||||
import rm from 'rimraf';
|
import rm from 'rimraf';
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
import {setAdbClient} from './devices/android/adbClient';
|
import {initializeAdbClient} from './devices/android/adbClient';
|
||||||
import {setIdbConfig} from './devices/ios/idbConfig';
|
|
||||||
import {assertNotNull} from './comms/Utilities';
|
import {assertNotNull} from './comms/Utilities';
|
||||||
|
|
||||||
const {access, copyFile, mkdir, unlink, stat, readlink, readFile, writeFile} =
|
const {access, copyFile, mkdir, unlink, stat, readlink, readFile, writeFile} =
|
||||||
@@ -163,7 +162,7 @@ export class FlipperServerImpl implements FlipperServer {
|
|||||||
const asyncDeviceListenersPromises: Array<Promise<void>> = [];
|
const asyncDeviceListenersPromises: Array<Promise<void>> = [];
|
||||||
if (this.config.settings.enableAndroid) {
|
if (this.config.settings.enableAndroid) {
|
||||||
asyncDeviceListenersPromises.push(
|
asyncDeviceListenersPromises.push(
|
||||||
setAdbClient(this.config.settings)
|
initializeAdbClient(this.config.settings)
|
||||||
.then((adbClient) => {
|
.then((adbClient) => {
|
||||||
if (!adbClient) {
|
if (!adbClient) {
|
||||||
return;
|
return;
|
||||||
@@ -180,8 +179,7 @@ export class FlipperServerImpl implements FlipperServer {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (this.config.settings.enableIOS) {
|
if (this.config.settings.enableIOS) {
|
||||||
const idbConfig = setIdbConfig(this.config.settings);
|
this.ios = new IOSDeviceManager(this, this.config.settings);
|
||||||
this.ios = new IOSDeviceManager(this, idbConfig);
|
|
||||||
asyncDeviceListenersPromises.push(
|
asyncDeviceListenersPromises.push(
|
||||||
this.ios.watchIOSDevices().catch((e) => {
|
this.ios.watchIOSDevices().catch((e) => {
|
||||||
console.error(
|
console.error(
|
||||||
|
|||||||
@@ -13,20 +13,14 @@ import adbConfig from './adbConfig';
|
|||||||
import adbkit, {Client} from 'adbkit';
|
import adbkit, {Client} from 'adbkit';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
|
||||||
let instance: Client | undefined;
|
|
||||||
|
|
||||||
type Config = {
|
type Config = {
|
||||||
androidHome: string;
|
androidHome: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function getAdbClient(): Client | undefined {
|
export async function initializeAdbClient(
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function setAdbClient(
|
|
||||||
config: Config,
|
config: Config,
|
||||||
): Promise<Client | undefined> {
|
): Promise<Client | void> {
|
||||||
instance = await reportPlatformFailures(
|
const adbClient = await reportPlatformFailures(
|
||||||
createClient(config),
|
createClient(config),
|
||||||
'createADBClient',
|
'createADBClient',
|
||||||
).catch((e) => {
|
).catch((e) => {
|
||||||
@@ -34,9 +28,8 @@ export async function setAdbClient(
|
|||||||
'Failed to initialize ADB. Please disable Android support in settings, or configure a correct path.',
|
'Failed to initialize ADB. Please disable Android support in settings, or configure a correct path.',
|
||||||
e,
|
e,
|
||||||
);
|
);
|
||||||
return undefined;
|
|
||||||
});
|
});
|
||||||
return instance;
|
return adbClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Adbkit will attempt to start the adb server if it's not already running,
|
/* Adbkit will attempt to start the adb server if it's not already running,
|
||||||
|
|||||||
@@ -7,9 +7,8 @@
|
|||||||
* @format
|
* @format
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {IdbConfig} from './idbConfig';
|
|
||||||
import CertificateProvider from '../../utils/CertificateProvider';
|
import CertificateProvider from '../../utils/CertificateProvider';
|
||||||
import iosUtil from './iOSContainerUtility';
|
import iosUtil, {IdbConfig} from './iOSContainerUtility';
|
||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
import {promisify} from 'util';
|
import {promisify} from 'util';
|
||||||
import tmp, {DirOptions} from 'tmp';
|
import tmp, {DirOptions} from 'tmp';
|
||||||
|
|||||||
@@ -19,6 +19,11 @@ import fs from 'fs-extra';
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
const exec = promisify(child_process.exec);
|
const exec = promisify(child_process.exec);
|
||||||
|
|
||||||
|
export type IdbConfig = {
|
||||||
|
idbPath: string;
|
||||||
|
enablePhysicalIOS: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
// Use debug to get helpful logs when idb fails
|
// Use debug to get helpful logs when idb fails
|
||||||
const idbLogLevel = 'DEBUG';
|
const idbLogLevel = 'DEBUG';
|
||||||
const operationPrefix = 'iosContainerUtility';
|
const operationPrefix = 'iosContainerUtility';
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import type {IOSDeviceParams} from 'flipper-common';
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
import childProcess from 'child_process';
|
import childProcess from 'child_process';
|
||||||
import {exec} from 'promisify-child-process';
|
import {exec} from 'promisify-child-process';
|
||||||
import iosUtil from './iOSContainerUtility';
|
import iosUtil, {IdbConfig} from './iOSContainerUtility';
|
||||||
import IOSDevice from './IOSDevice';
|
import IOSDevice from './IOSDevice';
|
||||||
import {
|
import {
|
||||||
ERR_NO_IDB_OR_XCODE_AVAILABLE,
|
ERR_NO_IDB_OR_XCODE_AVAILABLE,
|
||||||
@@ -22,7 +22,6 @@ import {
|
|||||||
} from './IOSBridge';
|
} from './IOSBridge';
|
||||||
import {FlipperServerImpl} from '../../FlipperServerImpl';
|
import {FlipperServerImpl} from '../../FlipperServerImpl';
|
||||||
import {getFlipperServerConfig} from '../../FlipperServerConfig';
|
import {getFlipperServerConfig} from '../../FlipperServerConfig';
|
||||||
import {IdbConfig} from './idbConfig';
|
|
||||||
import iOSCertificateProvider from './iOSCertificateProvider';
|
import iOSCertificateProvider from './iOSCertificateProvider';
|
||||||
|
|
||||||
export class IOSDeviceManager {
|
export class IOSDeviceManager {
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
||||||
*
|
|
||||||
* This source code is licensed under the MIT license found in the
|
|
||||||
* LICENSE file in the root directory of this source tree.
|
|
||||||
*
|
|
||||||
* @format
|
|
||||||
*/
|
|
||||||
|
|
||||||
export type IdbConfig = {
|
|
||||||
idbPath: string;
|
|
||||||
enablePhysicalIOS: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
let idbConfig: IdbConfig | undefined;
|
|
||||||
|
|
||||||
export const getIdbConfig = () => idbConfig;
|
|
||||||
|
|
||||||
export const setIdbConfig = (newIdbConfig: IdbConfig) => {
|
|
||||||
idbConfig = newIdbConfig;
|
|
||||||
return idbConfig;
|
|
||||||
};
|
|
||||||
Reference in New Issue
Block a user