/** * Copyright 2018-present Facebook. * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * @format */ import {promisify} from 'util'; import {DeviceType} from '../devices/BaseDevice'; const exec = promisify(require('child_process').exec); const errorMessage = 'Physical iOS devices not yet supported'; export type DeviceTarget = { udid: string; type: DeviceType; name: string; }; function isAvailable(): boolean { return false; } function targets(): Promise> { return exec('instruments -s devices').then(({stdout}) => stdout .toString() .split('\n') .map(line => line.trim()) .map(line => /(.+) \([^(]+\) \[(.*)\]( \(Simulator\))?/.exec(line)) .filter(Boolean) .filter( ([match, name, udid, isSim]) => !isSim && (name.includes('iPhone') || name.includes('iPad')), ) .map(([match, name, udid]) => { return {udid: udid, type: 'physical', name: name}; }), ); } function push( udid: string, src: string, bundleId: string, dst: string, ): Promise { return Promise.reject(errorMessage); } function pull( udid: string, src: string, bundleId: string, dst: string, ): Promise { return Promise.reject(errorMessage); } export default { isAvailable: isAvailable, targets: targets, push: push, pull: pull, };