/** * */ package org.minnal.generator; import java.io.InputStream; import java.io.PrintStream; import java.util.List; import java.util.Scanner; import org.minnal.generator.exception.MinnalGeneratorException; import com.google.common.base.Charsets; /** * @author ganeshs * */ public abstract class ExecutableCommand implements Command { public void execute(List<String> commandArgs) { ProcessBuilder builder = new ProcessBuilder(commandArgs); try { Process p = builder.start(); inheritIO(p.getInputStream(), System.out); inheritIO(p.getErrorStream(), System.err); } catch (Exception e) { throw new MinnalGeneratorException("Failed while starting the project", e); } } private void inheritIO(final InputStream src, final PrintStream dest) { new Thread(new Runnable() { public void run() { Scanner sc = new Scanner(src, Charsets.UTF_8.name()); while (sc.hasNextLine()) { dest.println(sc.nextLine()); } sc.close(); } }).start(); } }