package com.github.masahirosuzuka.PhoneGapIntelliJPlugin.commandLine;
import com.intellij.openapi.project.Project;
import com.intellij.util.Function;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import static com.github.masahirosuzuka.PhoneGapIntelliJPlugin.runner.ui.PhoneGapRunConfigurationEditor.PLATFORM_IOS;
public class PhoneGapIosTargets extends PhoneGapTargets {
private static final Function<String, String> PARSER_DEVICE_LINE = s -> parseDevice(s);
private static final Function<String, String> PARSER_VIRTUAL_DEVICE_LINE = s -> parseVirtualDevice(s);
private static final String IOS_SIM = "ios-sim";
private static final String IOS_DEPLOY = "ios-deploy";
private static final String EMULATOR_PREFIX = "com.apple.CoreSimulator.SimDeviceType.";
public PhoneGapIosTargets(@NotNull Project project) {
super(project);
}
@NotNull
@Override
protected List<String> listDevicesNonCached() {
return list(IOS_DEPLOY, PARSER_DEVICE_LINE, true, "-c", "-t", "1");
}
@NotNull
@Override
protected List<String> listVirtualDevicesNonCached() {
return list(IOS_SIM, PARSER_VIRTUAL_DEVICE_LINE, true, "showdevicetypes");
}
@NotNull
@Override
public String platform() {
return PLATFORM_IOS;
}
public static String getIosSimName() {
return IOS_SIM;
}
public static String getIosDeployName() {
return IOS_DEPLOY;
}
/**
* device id is a string between ()
* like 2e7c1f7dbedfe54fc7ded3451974f8007e177639 in
* 'Found iPhone 4S 'Andrey's iPhone' (2e7c1f7dbedfe54fc7ded3451974f8007e177639) connected through USB.'
*/
@Nullable
private static String parseDevice(@Nullable String inputLine) {
if (inputLine == null) return null;
int start = inputLine.indexOf('(');
if (start < 0) return null;
int end = inputLine.indexOf(')');
if (end <= 0 || end < start) return null;
return inputLine.substring(start + 1, end).trim();
}
public static String parseVirtualDevice(@Nullable String inputLine) {
if (inputLine == null) return null;
String[] splitValues = inputLine.split(",");
if (splitValues[0].startsWith(EMULATOR_PREFIX)) {
return splitValues[0].substring(EMULATOR_PREFIX.length()).trim();
}
return null;
}
}