diff --git a/arduino-core/src/cc/arduino/Compiler.java b/arduino-core/src/cc/arduino/Compiler.java index 10401105b..268a481a8 100644 --- a/arduino-core/src/cc/arduino/Compiler.java +++ b/arduino-core/src/cc/arduino/Compiler.java @@ -207,10 +207,10 @@ public class Compiler implements MessageConsumer { CompileResult result; try { - MessageConsumerOutputStream out = new MessageConsumerOutputStream(new ProgressAwareMessageConsumer(new I18NAwareMessageConsumer(System.out, System.err), progListeners), "\n"); + MessageConsumerOutputStream out = new MessageConsumerOutputStream(new I18NAwareMessageConsumer(System.out, System.err), "\n"); MessageConsumerOutputStream err = new MessageConsumerOutputStream(new I18NAwareMessageConsumer(System.err, this), "\n"); - result = core.compile(req.build(), out, err); + result = core.compile(req.build(), out, err, progListeners); out.flush(); err.flush(); @@ -221,7 +221,7 @@ public class Compiler implements MessageConsumer { if (exception != null) throw exception; - if (result == CompileResult.error) { + if (result == CompileResult.compile_error) { RunnerException re = new RunnerException(I18n.format(tr("Error compiling for board {0}."), board.getName())); re.hideStackTrace(); throw re; diff --git a/arduino-core/src/cc/arduino/cli/ArduinoCoreInstance.java b/arduino-core/src/cc/arduino/cli/ArduinoCoreInstance.java index 1ae28e3f1..523cafd1e 100644 --- a/arduino-core/src/cc/arduino/cli/ArduinoCoreInstance.java +++ b/arduino-core/src/cc/arduino/cli/ArduinoCoreInstance.java @@ -39,6 +39,7 @@ import java.util.List; import com.google.protobuf.ByteString; +import cc.arduino.CompilerProgressListener; import cc.arduino.cli.commands.ArduinoCoreGrpc.ArduinoCoreBlockingStub; import cc.arduino.cli.commands.Board.BoardDetailsReq; import cc.arduino.cli.commands.Board.BoardDetailsResp; @@ -91,14 +92,14 @@ public class ArduinoCoreInstance { } } - public CompileResult compile(CompileReq req, OutputStream out, - OutputStream err) throws StatusException { + public CompileResult compile(CompileReq req, OutputStream out, OutputStream err, + List progressListeners) throws StatusException { req = CompileReq.newBuilder(req) // .setInstance(instance) // .build(); try { Iterator stream = stub.compile(req); - CompileResult result = CompileResult.error; + CompileResult result = CompileResult.compile_error; while (stream.hasNext()) { CompileResp resp = stream.next(); try { @@ -108,6 +109,13 @@ public class ArduinoCoreInstance { ByteString errdata = resp.getErrStream(); if (errdata != null) err.write(errdata.toByteArray()); + TaskProgress taskProgress = resp.getTaskProgress(); + if (taskProgress != null) { + float progress = taskProgress.getPercentCompleted(); + if (progress > 0) { + progressListeners.forEach(l -> l.progress((int) progress)); + } + } } catch (IOException e) { e.printStackTrace(); }