예제 #1
0
 public static Either<CommandResult> runCommand(
     final Context context, final String command, final File path, final List<String> arguments) {
   try {
     final List<String> commandAndArgs = new ArrayList<String>();
     commandAndArgs.add(command);
     commandAndArgs.addAll(arguments);
     final ProcessBuilder pb = new ProcessBuilder(commandAndArgs);
     if (path != null) {
       pb.directory(path);
     }
     logCommand(context, pb);
     final Process compilation = pb.start();
     final ConsumeStream result = ConsumeStream.start(compilation.getInputStream(), context);
     final ConsumeStream error = ConsumeStream.start(compilation.getErrorStream(), context);
     final int exitCode = compilation.waitFor();
     result.join();
     error.join();
     if (result.exception != null) {
       return Either.fail(result.exception);
     }
     if (error.exception != null) {
       return Either.fail(error.exception);
     }
     return Either.success(
         new CommandResult(result.output.toString(), error.output.toString(), exitCode));
   } catch (IOException ex) {
     return Either.fail(ex);
   } catch (InterruptedException ex) {
     return Either.fail(ex);
   }
 }
예제 #2
0
 public static Either<String> readFile(final File file) {
   try {
     final FileInputStream stream = new FileInputStream(file);
     try {
       final String content = read(stream);
       return Either.success(content);
     } finally {
       stream.close();
     }
   } catch (IOException ex) {
     return Either.fail(ex);
   }
 }
예제 #3
0
 public static synchronized Either<Document> readXml(final InputStream stream) {
   try {
     final DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
     final DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
     return Either.success(dBuilder.parse(stream));
   } catch (IOException ex) {
     return Either.fail(ex);
   } catch (ParserConfigurationException ex) {
     return Either.fail(ex);
   } catch (SAXException ex) {
     return Either.fail(ex);
   }
 }
예제 #4
0
 public static Either<String> findCommand(
     final Context context, final String path, final String name, final String contains) {
   final String simple = path != null ? new File(path, name).getAbsolutePath() : name;
   if (testCommand(context, simple, contains, new ArrayList<String>())) {
     context.log("Found " + name + " in " + simple);
     return Either.success(simple);
   }
   if (isWindows()) {
     final String bat =
         path != null ? new File(path, name + ".bat").getAbsolutePath() : name + ".bat";
     if (testCommand(context, bat, contains, new ArrayList<String>())) {
       context.log("Found " + name + " in " + bat);
       return Either.success(bat);
     }
     final String cmd =
         path != null ? new File(path, name + ".cmd").getAbsolutePath() : name + ".cmd";
     if (testCommand(context, cmd, contains, new ArrayList<String>())) {
       context.log("Found " + name + " in " + cmd);
       return Either.success(cmd);
     }
   }
   return Either.fail("File not found: " + name);
 }