1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
use crate::error::*; use simctl::{list::DeviceState, Device, DeviceQuery, Simctl}; use std::path::Path; pub fn launch_apple_app( app_path: &Path, device_name: &str, bundle_id: &str, open: bool, ) -> Result<Device> { let simctl = Simctl::new(); let device_list = simctl.list()?; let device = device_list .devices() .iter() .available() .by_name(device_name) .next() .unwrap(); if device.state != DeviceState::Booted { device.boot()?; } device.install(app_path)?; let result = device.launch(bundle_id).use_pty(true).exec(); if open { simctl.open()?; } result?; Ok(device.clone()) }