in components/support/nimbus-cli/src/cmd.rs [478:536]
fn android_start(&self, app_protocol: StartAppProtocol, open: &AppOpenArgs) -> Result<Command> {
if let Self::Android {
package_name,
activity_name,
..
} = self
{
let mut args: Vec<String> = Vec::new();
let (start_args, ending_args) = open.args();
args.extend_from_slice(start_args);
if let Some(deeplink) = self.deeplink(open)? {
args.extend([
"-a android.intent.action.VIEW".to_string(),
"-c android.intent.category.DEFAULT".to_string(),
"-c android.intent.category.BROWSABLE".to_string(),
format!("-d {}", deeplink),
]);
} else {
args.extend([
format!("-n {}/{}", package_name, activity_name),
"-a android.intent.action.MAIN".to_string(),
"-c android.intent.category.LAUNCHER".to_string(),
]);
}
let StartAppProtocol {
reset_db,
experiments,
log_state,
} = app_protocol;
if log_state || experiments.is_some() || reset_db {
args.extend(["--esn nimbus-cli".to_string(), "--ei version 1".to_string()]);
}
if reset_db {
args.push("--ez reset-db true".to_string());
}
if let Some(s) = experiments {
let json = s.to_string().replace('\'', "'");
args.push(format!("--es experiments '{}'", json))
}
if log_state {
args.push("--ez log-state true".to_string());
};
args.extend_from_slice(ending_args);
let sh = format!(r#"am start {}"#, args.join(" \\\n "),);
let term = Term::stdout();
prompt(&term, &format!("adb shell \"{}\"", sh))?;
let mut cmd = self.exe()?;
cmd.arg("shell").arg(&sh);
Ok(cmd)
} else {
unreachable!();
}
}