From cc892c02425593fbec7be51932a3ecab1b895432 Mon Sep 17 00:00:00 2001 From: fatme Date: Fri, 13 Apr 2018 10:02:02 +0300 Subject: [PATCH] Support for getting device by name and sdk Fixes: https://github.com/NativeScript/nativescript-cli/issues/2131 https://github.com/NativeScript/nativescript-cli/issues/1548 --- lib/iphone-simulator-xcode-simctl.ts | 36 ++++++++++++++++++---------- package.json | 2 +- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/lib/iphone-simulator-xcode-simctl.ts b/lib/iphone-simulator-xcode-simctl.ts index 3b7c6ed..8a018da 100755 --- a/lib/iphone-simulator-xcode-simctl.ts +++ b/lib/iphone-simulator-xcode-simctl.ts @@ -177,24 +177,33 @@ export class XCodeSimctlSimulator extends IPhoneSimulatorNameGetter implements I return this.deviceLogChildProcess; } - private getDeviceToRun(): IDevice { - let devices = this.simctl.getDevices(), - sdkVersion = options.sdkVersion || options.sdk; + private getDeviceToRun(device?: any): IDevice { + let devices = _.sortBy(this.simctl.getDevices(), (device) => device.runtimeVersion), + sdkVersion = options.sdkVersion || options.sdk, + deviceIdOrName = options.device; + + if (device && (device.sdkVersion || device.sdk)) { + sdkVersion = device.sdkVersion || device.sdk; + } + + if (device && device.id) { + deviceIdOrName = device.id; + } let result = _.find(devices, (device: IDevice) => { - if (sdkVersion && !options.device) { + if (sdkVersion && !deviceIdOrName) { return device.runtimeVersion === sdkVersion; } - if (options.device && !sdkVersion) { - return device.name === options.device || device.id === options.device; + if (deviceIdOrName && !sdkVersion) { + return device.name === deviceIdOrName || device.id === deviceIdOrName; } - if (options.device && sdkVersion) { - return device.runtimeVersion === sdkVersion && (device.name === options.device || device.id === options.device); + if (deviceIdOrName && sdkVersion) { + return device.runtimeVersion === sdkVersion && (device.name === deviceIdOrName || device.id === deviceIdOrName); } - if (!sdkVersion && !options.device) { + if (!sdkVersion && !deviceIdOrName) { return this.isDeviceBooted(device); } }); @@ -204,8 +213,7 @@ export class XCodeSimctlSimulator extends IPhoneSimulatorNameGetter implements I } if (!result) { - let sortedDevices = _.sortBy(devices, (device) => device.runtimeVersion); - result = _.last(sortedDevices); + result = _.last(devices); } return result; @@ -226,7 +234,9 @@ export class XCodeSimctlSimulator extends IPhoneSimulatorNameGetter implements I } public startSimulator(device?: IDevice): void { - device = device || this.getDeviceToRun(); + if (!device || !device.runtimeVersion || !device.fullId) { + device = this.getDeviceToRun(device); + } // In case the id is undefined, skip verification - we'll start default simulator. if (device.id) { @@ -273,7 +283,7 @@ export class XCodeSimctlSimulator extends IPhoneSimulatorNameGetter implements I private verifyDevice(device: IDevice): void { const availableDevices = this.getDevices(); - if (!_.find(availableDevices, { id: device.id })) { + if (!_.find(availableDevices, { id: device.id }) && !_.find(availableDevices, { name: device.id })) { errors.fail(`No simulator image available for device identifier '${device.id}'.`); } } diff --git a/package.json b/package.json index 1bfa2bd..8b135f1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ios-sim-portable", - "version": "3.3.1", + "version": "3.3.2", "description": "", "main": "./lib/ios-sim.js", "scripts": {