package se.chalmers.gdcn.taskbuilder; import org.apache.commons.io.IOUtils; import se.chalmers.gdcn.taskbuilder.fileManagement.Install; import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.util.List; import java.util.Map; /** * Created by joakim on 2014-05-05. */ public class HaskellCompiler { public void compile(String[] command) throws IOException, InterruptedException, ExitFailureException{ //System.out.println("\nCompile command:"); //for(String c : command){ // System.out.print(c + " "); //} //System.out.println("\n"); //ProcessBuilder pb = new ProcessBuilder(command).inheritIO(); ProcessBuilder pb = new ProcessBuilder(command); Map<String, String> env = pb.environment(); if (env.containsKey("GHC_PACKAGE_PATH")) { env.put("GHC_PACKAGE_PATH", Install.HDB_DIR + File.pathSeparator + env.get("GHC_PACKAGE_PATH")); } else { env.put("GHC_PACKAGE_PATH", Install.HDB_DIR + File.pathSeparator); } Process proc = null; try { proc = pb.start(); if (proc.waitFor() != 0) { StringWriter writer = new StringWriter(); IOUtils.copy(proc.getErrorStream(), writer, null); throw new ExitFailureException(writer.toString()); } } finally { if (proc != null) { proc.destroy(); } } } public void compile(List<String> command) throws IOException, InterruptedException, ExitFailureException{ String[] array = new String[command.size()]; compile(command.toArray(array)); } }