package com.siberika.idea.pascal.run; import com.intellij.execution.configurations.RunProfile; import com.intellij.execution.executors.DefaultRunExecutor; import com.intellij.execution.runners.DefaultProgramRunner; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.CompilerModuleExtension; import com.intellij.openapi.util.text.StringUtil; import com.siberika.idea.pascal.jps.model.JpsPascalModuleType; import com.siberika.idea.pascal.jps.util.FileUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; /** * Author: George Bakhtadze * Date: 05/12/2012 */ public class PascalRunner extends DefaultProgramRunner { @NotNull public String getRunnerId() { return "com.siberika.idea.pascal.run.PascalRunner"; } public boolean canRun(@NotNull String executorId, @NotNull RunProfile profile) { return (profile instanceof PascalRunConfiguration) && executorId.equals(DefaultRunExecutor.EXECUTOR_ID); } @Nullable public static String getExecutable(@NotNull Module module, String programFileName) { if (null == programFileName) { return null; } String path = module.getOptionValue(JpsPascalModuleType.USERDATA_KEY_EXE_OUTPUT_PATH.toString()); if (StringUtil.isEmpty(path)) { CompilerModuleExtension compilerModuleExtension = CompilerModuleExtension.getInstance(module); if ((compilerModuleExtension != null) && (compilerModuleExtension.getCompilerOutputPath() != null)) { path = compilerModuleExtension.getCompilerOutputPath().getPath(); } } return FileUtil.getExecutable(new File(path != null ? path : ""), programFileName).getPath(); } }