polyhorn_cli/android/tasks/
install.rs1use std::process::{Command, Stdio};
2
3use super::{AndroidContext, AndroidError};
4use crate::core::{Manager, Task};
5
6pub struct Install;
9
10impl Task for Install {
11 type Context = AndroidContext;
12 type Error = AndroidError;
13
14 fn verb(&self) -> &str {
15 "Installing"
16 }
17
18 fn message(&self) -> &str {
19 "Android App"
20 }
21
22 fn detail(&self) -> &str {
23 ""
24 }
25
26 fn run(
27 &self,
28 context: AndroidContext,
29 _manager: &mut Manager,
30 ) -> Result<AndroidContext, AndroidError> {
31 let destination_path = context.config.target_dir.clone();
32 let java_home = context.java_home.as_ref().unwrap();
33 let android_sdk_root = context.android_sdk_root.as_ref().unwrap();
34
35 let mut working_directory = destination_path.clone();
36 working_directory.push("polyhorn-android");
37
38 let mut gradlew = working_directory.clone();
39 gradlew.push("gradlew");
40
41 let mut command = Command::new(gradlew);
42 command.current_dir(working_directory);
43 command.env("ANDROID_SDK_ROOT", android_sdk_root);
44 command.env("JAVA_HOME", java_home);
45 command.arg("installDebug");
46 command.stdout(Stdio::piped());
47 let output = command.spawn();
48
49 output.unwrap().wait().unwrap();
50
51 Ok(context)
52 }
53}