package org.jetbrains.plugins.ruby.motion.run; import com.intellij.execution.ExecutionException; import com.intellij.execution.configurations.GeneralCommandLine; import com.intellij.execution.process.ProcessHandler; import com.jetbrains.cidr.execution.Installer; import com.jetbrains.cidr.execution.RunParameters; import com.jetbrains.cidr.execution.TrivialInstaller; import com.jetbrains.cidr.execution.debugger.CidrDebuggerLog; import com.jetbrains.cidr.execution.debugger.backend.DebuggerDriverConfiguration; import com.jetbrains.cidr.execution.debugger.backend.XcodeLLDBDriverConfiguration; import com.jetbrains.cidr.execution.deviceSupport.AMDevice; import com.jetbrains.cidr.execution.deviceSupport.AMDeviceManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * @author Dennis.Ushakov */ class MotionAppRunParameters extends RunParameters { private final boolean myOnDevice; private final ProcessHandler myServerProcessHandler; public MotionAppRunParameters(boolean onDevice, ProcessHandler serverProcessHandler) { myOnDevice = onDevice; myServerProcessHandler = serverProcessHandler; } @NotNull @Override public Installer getInstaller() { return myOnDevice ? new MotionInstaller((DeviceProcessHandler)myServerProcessHandler) : new TrivialInstaller(new GeneralCommandLine("")); } @Nullable @Override public String getArchitectureId() { return myOnDevice ? AMDeviceManager.getInstance().getDeviceArchitecture(getDevice()) : "i386"; } public AMDevice getDevice() { return getDevice(myServerProcessHandler); } @NotNull public static AMDevice getDevice(ProcessHandler serverProcessHandler) { try { return ((DeviceProcessHandler)serverProcessHandler).getDevice(); } catch (ExecutionException e) { CidrDebuggerLog.LOG.error(e); throw new RuntimeException(e); } } @NotNull @Override public DebuggerDriverConfiguration getDebuggerDriverConfiguration() { return new XcodeLLDBDriverConfiguration(null); } }