code: public static int invokeProcess(String[] commandLine, Consumer<String> consumer)
              throws IOException, InterruptedException {
          return invokeProcess(commandLine, null, new DelegatingConsumer(consumer));
      }
docs: Runs the given set of command line arguments as a system process and returns the exit value of the spawned
  process. Outputs of the process (both normal and error) are passed to the {@code consumer}.
  
  @param commandLine
  the list of command line arguments to run
  @param consumer
  the consumer for the program's output
  
  @return the exit code of the process
  
  @throws IOException
  if an exception occurred while reading the process' outputs
  @throws InterruptedException
  if an exception occurred during process exception