iOS CLI version mismatch detection
Summary: Trying to detect version mismatches between the running Simulator and the version of Xcode's CLI tools. What is done in this check: - The running path of the running simulator is queries from `ps` - The path of Xcode CLI tools is queried using `xcode-select -p`. - The two paths are compared if they differ Reviewed By: jknoxville, passy Differential Revision: D15803238 fbshipit-source-id: 6638312505fc950ff7869fd55494984bfffb677b
This commit is contained in:
committed by
Facebook Github Bot
parent
fd89d73be5
commit
eb36e667d4
@@ -53,6 +53,7 @@ if (typeof window !== 'undefined') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function queryDevices(store: Store, logger: Logger): Promise<void> {
|
function queryDevices(store: Store, logger: Logger): Promise<void> {
|
||||||
|
checkXcodeVersionMismatch();
|
||||||
const {connections} = store.getState();
|
const {connections} = store.getState();
|
||||||
const currentDeviceIDs: Set<string> = new Set(
|
const currentDeviceIDs: Set<string> = new Set(
|
||||||
connections.devices
|
connections.devices
|
||||||
@@ -143,6 +144,34 @@ function getActiveDevices(): Promise<Array<IOSDeviceParams>> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let xcodeVersionMismatchFound = false;
|
||||||
|
async function checkXcodeVersionMismatch() {
|
||||||
|
if (xcodeVersionMismatchFound) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const exec = promisify(child_process.exec);
|
||||||
|
try {
|
||||||
|
let {stdout: xcodeCLIVersion} = await exec('xcode-select -p');
|
||||||
|
xcodeCLIVersion = xcodeCLIVersion.trim();
|
||||||
|
const {stdout} = await exec('ps aux | grep CoreSimulator');
|
||||||
|
for (let line of stdout.split('\n')) {
|
||||||
|
const match = line.match(
|
||||||
|
/\/Applications\/Xcode[^/]*\.app\/Contents\/Developer/,
|
||||||
|
);
|
||||||
|
const runningVersion = match && match.length > 0 ? match[0].trim() : null;
|
||||||
|
if (runningVersion && runningVersion !== xcodeCLIVersion) {
|
||||||
|
console.error(
|
||||||
|
`Xcode version mismatch: Simulator is running from "${runningVersion}" while Xcode CLI is "${xcodeCLIVersion}". Running "xcode-select --switch ${runningVersion}" can fix this.`,
|
||||||
|
);
|
||||||
|
xcodeVersionMismatchFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export async function getActiveDevicesAndSimulators(): Promise<
|
export async function getActiveDevicesAndSimulators(): Promise<
|
||||||
Array<IOSDevice>,
|
Array<IOSDevice>,
|
||||||
> {
|
> {
|
||||||
|
|||||||
Reference in New Issue
Block a user