Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1&1 Internet AG, http://www.1and1.org
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2 of the License,
   * or (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package net.sf.beezle.sushi.util;
 
 
 import java.util.List;

Wraps a Process builder to add some convenience methods
 
 public class Program {
     public final World world;
     private final FileNode dir;
     public final ProcessBuilder builder;
     
     public Program(FileNode dirString ... args) {
         this. = dir.getWorld();
         this. = dir;
         this. = new ProcessBuilder();
         this..directory(dir.getFile());
         add(args);
     }
         
     public Program add(String ... args) {
         for (String a : args) {
             .command().add(a);
         }
         return this;
     }
     
     public Program addAll(List<Stringargs) {
         .command().addAll(args);
         return this;
     }
     
     public void execNoOutput() throws IOException {
         String result;
         
         result = exec();
         if (result.trim().length() > 0) {
             throw new IOException(.command().get(0) + ": unexpected output " + result);
         }
     }
     
     public String exec() throws IOException {
         ByteArrayOutputStream result;
         
         result = new ByteArrayOutputStream();
         exec(result);
         return .getSettings().string(result.toByteArray());
     }
    
    
executes a command in this directory, returns the output
 
     public void exec(OutputStream destthrows IOException {
         Process process;
         int exit;
         String output;
         
         .redirectErrorStream(true);
         process = .start();
         // this looks like a busy wait to me, but it's what all the examples suggest:
         .getBuffer().copy(process.getInputStream(), dest);
         try {
             exit = process.waitFor();
         } catch (InterruptedException e) {
             throw new RuntimeException(e);
         }
         if (exit != 0) {
             if (dest instanceof ByteArrayOutputStream) {
                 output = .getSettings().string(((ByteArrayOutputStreamdest));
             } else {
                 output = "";
             }
             throw new ExitCode(.command(), exitoutput);
         }
     }
 
     @Override
     public String toString() {
        return "[" +  + "] " + Strings.join(" ".command());
    }
New to GrepCode? Check out our FAQ X