polyhorn_cli/android/commands/
run.rs1use ansi_term::Colour::Red;
2use std::collections::HashMap;
3use std::path::Path;
4
5use crate::android::tasks::{self, AndroidContext, AndroidTask};
6use crate::android::Target;
7use crate::core::Executioner;
8use crate::Config;
9
10pub fn run(config: Config) {
12 let result = Executioner::execute(
13 &[
14 AndroidTask::InstallTarget(tasks::InstallTarget(Target::armeabi_v7a().llvm_triple)),
15 AndroidTask::FindAndroidStudio(tasks::FindAndroidStudio),
16 AndroidTask::GenerateSourceTree(tasks::GenerateSourceTree),
17 AndroidTask::BuildRuntimeLibrary(tasks::BuildRuntimeLibrary {
18 target: Target::armeabi_v7a(),
19 profile: "debug",
20 }),
21 AndroidTask::LinkNativeLibraries(tasks::LinkNativeLibraries),
22 AndroidTask::Install(tasks::Install),
23 AndroidTask::Run(tasks::Run),
24 ],
25 AndroidContext {
26 config,
27 java_home: std::env::var("JAVA_HOME")
28 .ok()
29 .map(|path| Path::new(&path).to_path_buf()),
30 android_sdk_root: std::env::var("ANDROID_SDK_ROOT")
31 .ok()
32 .map(|path| Path::new(&path).to_path_buf()),
33 products: HashMap::new(),
34 },
35 );
36
37 match result {
38 Ok(_) => {}
39 Err(error) => {
40 eprintln!("{}: {:?}", Red.bold().paint("error"), error);
41 std::process::exit(1);
42 }
43 }
44}