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
31
32
use crate::error::*;
use std::path::{Path, PathBuf};
use std::process::Command;
#[derive(Debug, PartialEq, PartialOrd)]
pub struct GetDeviceSpec {
output: PathBuf,
}
impl GetDeviceSpec {
pub fn new(output: &Path) -> Self {
Self {
output: output.to_owned(),
}
}
pub fn run(&self) -> Result<()> {
let mut get_device_spec = Command::new("java");
get_device_spec.arg("-jar");
if let Ok(bundletool_path) = std::env::var("BUNDLETOOL_PATH") {
get_device_spec.arg(bundletool_path);
} else {
return Err(Error::BundletoolNotFound.into());
}
get_device_spec.arg("get-device-spec");
get_device_spec.arg("--output").arg(&self.output);
get_device_spec.output_err(true)?;
Ok(())
}
}