import java.io.IOException;
import java.io.OutputStream;
import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.concurrent.TimeoutException;
import org.simantics.district.maps.server.utils.EnvUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.zeroturnaround.exec.InvalidExitValueException;
import org.zeroturnaround.exec.ProcessExecutor;
-import org.zeroturnaround.exec.stream.slf4j.Slf4jStream;
+import org.zeroturnaround.exec.stream.slf4j.Slf4jInfoOutputStream;
public class NodeJS {
public static final String NODEJS_VERSION = "v4.8.0";
-
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(NodeJS.class);
private static final String NODE = "node";
private static Path nodeJSFolder() throws IOException, URISyntaxException {
}
public static int npm(OutputStream output, String... args) throws InvalidExitValueException, IOException, InterruptedException, TimeoutException, URISyntaxException {
+ LOGGER.info("Executing npm with args {}", Arrays.toString(args));
List<String> actualArgs = new ArrayList<>();
actualArgs.add(npmExecutable().toString());
actualArgs.addAll(Arrays.asList(args));
- ProcessExecutor exec = new ProcessExecutor().command(actualArgs).redirectOutput(Slf4jStream.ofCaller().asInfo()).destroyOnExit();
+ ProcessExecutor exec = new ProcessExecutor().command(actualArgs).redirectOutput(new Slf4jInfoOutputStream(LOGGER) {
+
+ @Override
+ protected void processLine(String line) {
+ // Convert to UTF-8 string
+ String utf8Line = new String(line.getBytes(), StandardCharsets.UTF_8);
+ log.info(utf8Line);
+ }
+ }).destroyOnExit();
+
if (output != null)
exec.redirectOutputAlsoTo(output);
return exec.execute().getExitValue();
public static void main(String[] args) throws Exception {
TileserverMapnik server = TileserverMapnikInstance.get();
- server.start();
+ server.start(Optional.empty());
}
}