public static int run(String[] argsArray, Consumer<byte[]> out, Consumer<byte[]> err) { Consumer<String> outln = s -> out.accept((s + "\n").getBytes()); final List<String> args = new ArrayList<>(Arrays.asList(argsArray)); if (args.size() < 1) { usage(outln); return EXIT_FAIL; } else if (args.size() == 1 && (args.get(0).equals("--help"))) { usage(outln); return EXIT_SUCCESS; } final Optional<String> command = extractArg(args, COMMAND_PREFIX).map(arg -> arg.substring(COMMAND_PREFIX.length())); final Optional<Integer> port = NativeImageBuildServer.extractPort(args); if (port.isPresent() && command.isPresent()) { ServerCommand serverCommand = ServerCommand.valueOf(command.get()); return sendRequest(serverCommand, String.join(" ", args).getBytes(), port.get(), out, err); } else { usage(outln); return EXIT_FAIL; } }
private int sendRequest(Consumer<byte[]> out, Consumer<byte[]> err, ServerCommand serverCommand, String... args) { List<String> argList = Arrays.asList(args); showVerboseMessage(verboseServer, "Sending to server ["); showVerboseMessage(verboseServer, serverCommand.toString()); if (argList.size() > 0) { showVerboseMessage(verboseServer, String.join(" \\\n", argList)); } showVerboseMessage(verboseServer, "]"); int exitCode = NativeImageBuildClient.sendRequest(serverCommand, String.join("\n", argList).getBytes(), port, out, err); showVerboseMessage(verboseServer, "Server returns: " + exitCode); return exitCode; }