polyhorn_cli/ios/commands/
run.rs1use ansi_term::Colour::Red;
2use simctl::Simctl;
3
4use super::select_device;
5use crate::core::Executioner;
6use crate::ios::tasks::{self, IOSContext, IOSTask};
7use crate::Config;
8
9pub fn run(config: Config) {
11 let device = select_device(Simctl::new().list().unwrap().devices());
12
13 let result = Executioner::execute(
14 &[
15 IOSTask::InstallDependencies(tasks::InstallDependencies {
16 dependencies: vec![
17 tasks::Dependency::cli(
18 "resvg",
19 &["resvg", "-V"],
20 &["cargo", "install", "resvg"],
21 ),
22 tasks::Dependency::cli(
23 "xcodegen",
24 &["xcodegen", "--version"],
25 &["brew", "install", "xcodegen"],
26 ),
27 ],
28 }),
29 IOSTask::InstallTarget(tasks::InstallTarget("x86_64-apple-ios")),
30 IOSTask::BuildRuntimeLibrary(tasks::BuildRuntimeLibrary {
31 target: "x86_64-apple-ios",
32 profile: "debug",
33 }),
34 IOSTask::CreateUniversalBinary(tasks::CreateUniversalBinary),
35 IOSTask::GenerateXcassets(tasks::GenerateXcassets),
36 IOSTask::GenerateXcodeproj(tasks::GenerateXcodeproj),
37 IOSTask::BuildXcodeproj(tasks::BuildXcodeproj {
38 scheme: config.spec.app.name.clone() + "_iOS",
39 configuration: "Debug".to_owned(),
40 destination_platform: "iOS Simulator".to_owned(),
41 destination_name: device.name.clone(),
42 }),
43 IOSTask::BootIOSSimulator(tasks::BootIOSSimulator {
44 device: device.clone(),
45 }),
46 IOSTask::OpenIOSSimulator(tasks::OpenIOSSimulator),
47 IOSTask::InstallOnIOSSimulator(tasks::InstallOnIOSSimulator {
48 device: device.clone(),
49 configuration: "Debug".to_owned(),
50 }),
51 IOSTask::RunOnIOSSimulator(tasks::RunOnIOSSimulator {
52 device: device.clone(),
53 env: vec![],
54 }),
55 ],
56 IOSContext {
57 config,
58 products: Default::default(),
59 universal_binary_path: None,
60 },
61 );
62
63 match result {
64 Ok(_) => {}
65 Err(error) => {
66 eprintln!("{}: {:?}", Red.bold().paint("error"), error);
67 std::process::exit(1);
68 }
69 }
70}