diff --git a/app/test/cc/arduino/i18n/ExternalProcessOutputParserTest.java b/app/test/cc/arduino/i18n/ExternalProcessOutputParserTest.java index 5bd56ac71..278a2598f 100644 --- a/app/test/cc/arduino/i18n/ExternalProcessOutputParserTest.java +++ b/app/test/cc/arduino/i18n/ExternalProcessOutputParserTest.java @@ -92,4 +92,29 @@ public class ExternalProcessOutputParserTest { assertEquals("", args[0]); } + @Test + public void testParser6() throws Exception { + Map output = new ExternalProcessOutputParser().parse("===info ||| Progress {0} ||| [79.31]"); + + assertEquals("info", output.get("level")); + assertEquals("Progress {0}", output.get("msg")); + Object[] args = (Object[]) output.get("args"); + assertEquals(1, args.length); + assertEquals("79.31", args[0]); + } + + @Test + public void testParser7() throws Exception { + Map output = new ExternalProcessOutputParser().parse("===info ||| Using library {0} at version {1} in folder: {2} {3} ||| [Bridge 1.6.0 %2Fhome%2Ffederico%2Fmateriale%2Fworks_Arduino%2FArduino%2Fbuild%2Flinux%2Fwork%2Flibraries%2FBridge ]"); + + assertEquals("info", output.get("level")); + assertEquals("Using library {0} at version {1} in folder: {2} {3}", output.get("msg")); + Object[] args = (Object[]) output.get("args"); + assertEquals(4, args.length); + assertEquals("Bridge", args[0]); + assertEquals("1.6.0", args[1]); + assertEquals("/home/federico/materiale/works_Arduino/Arduino/build/linux/work/libraries/Bridge", args[2]); + assertEquals("", args[3]); + } + } diff --git a/arduino-core/src/cc/arduino/Compiler.java b/arduino-core/src/cc/arduino/Compiler.java index 82b91c8c4..bb815575c 100644 --- a/arduino-core/src/cc/arduino/Compiler.java +++ b/arduino-core/src/cc/arduino/Compiler.java @@ -137,7 +137,7 @@ public class Compiler implements MessageConsumer { PreferencesMap prefs = loadPreferences(board, platform, aPackage, vidpid); - MessageConsumerOutputStream out = new MessageConsumerOutputStream(new ProgressAwareMessageConsumer(new I18NAwareMessageConsumer(System.out), progListener), "\n"); + MessageConsumerOutputStream out = new MessageConsumerOutputStream(new ProgressAwareMessageConsumer(new I18NAwareMessageConsumer(System.out, System.err), progListener), "\n"); MessageConsumerOutputStream err = new MessageConsumerOutputStream(new I18NAwareMessageConsumer(System.err, Compiler.this), "\n"); callArduinoBuilder(board, platform, aPackage, vidpid, BuilderAction.COMPILE, new PumpStreamHandler(out, err)); diff --git a/arduino-core/src/cc/arduino/ProgressAwareMessageConsumer.java b/arduino-core/src/cc/arduino/ProgressAwareMessageConsumer.java index d22515b55..22768b04b 100644 --- a/arduino-core/src/cc/arduino/ProgressAwareMessageConsumer.java +++ b/arduino-core/src/cc/arduino/ProgressAwareMessageConsumer.java @@ -48,7 +48,7 @@ public class ProgressAwareMessageConsumer implements MessageConsumer { @Override public void message(String s) { - if (s.startsWith("===Progress")) { + if (s.startsWith("===info ||| Progress") || s.startsWith("===Progress")) { Map parsedMessage = parser.parse(s); Object[] args = (Object[]) parsedMessage.get("args"); progressListener.progress(Double.valueOf(args[0].toString()).intValue()); diff --git a/arduino-core/src/cc/arduino/i18n/ExternalProcessOutputParser.java b/arduino-core/src/cc/arduino/i18n/ExternalProcessOutputParser.java index eb0c4e1de..7486ce4fb 100644 --- a/arduino-core/src/cc/arduino/i18n/ExternalProcessOutputParser.java +++ b/arduino-core/src/cc/arduino/i18n/ExternalProcessOutputParser.java @@ -50,8 +50,12 @@ public class ExternalProcessOutputParser { String[] parts = SPLIT.split(s); - output.put("msg", parts[0]); - output.put("args", parseArgs(parts[1])); + int idx = 0; + if (parts.length == 3) { + output.put("level", parts[idx++]); + } + output.put("msg", parts[idx++]); + output.put("args", parseArgs(parts[idx++])); return output; } diff --git a/arduino-core/src/cc/arduino/i18n/I18NAwareMessageConsumer.java b/arduino-core/src/cc/arduino/i18n/I18NAwareMessageConsumer.java index 0c1fd98e3..1fee78d85 100644 --- a/arduino-core/src/cc/arduino/i18n/I18NAwareMessageConsumer.java +++ b/arduino-core/src/cc/arduino/i18n/I18NAwareMessageConsumer.java @@ -39,16 +39,26 @@ import static processing.app.I18n.tr; public class I18NAwareMessageConsumer implements MessageConsumer { - private final PrintStream ps; + private final PrintStream out; + private final PrintStream err; private final MessageConsumer parent; private final ExternalProcessOutputParser parser; - public I18NAwareMessageConsumer(PrintStream ps) { - this(ps, null); + public I18NAwareMessageConsumer(PrintStream out) { + this(out, out, null); } - public I18NAwareMessageConsumer(PrintStream ps, MessageConsumer parent) { - this.ps = ps; + public I18NAwareMessageConsumer(PrintStream out, MessageConsumer parent) { + this(out, out, parent); + } + + public I18NAwareMessageConsumer(PrintStream out, PrintStream err) { + this(out, err, null); + } + + public I18NAwareMessageConsumer(PrintStream out, PrintStream err, MessageConsumer parent) { + this.out = out; + this.err = err; this.parent = parent; this.parser = new ExternalProcessOutputParser(); } @@ -57,14 +67,19 @@ public class I18NAwareMessageConsumer implements MessageConsumer { public void message(String s) { if (s.startsWith("===")) { Map parsedMessage = parser.parse(s); - ps.println(I18n.format(tr((String) parsedMessage.get("msg")), (Object[]) parsedMessage.get("args"))); + String translatedMessage = I18n.format(tr((String) parsedMessage.get("msg")), (Object[]) parsedMessage.get("args")); + if (!parsedMessage.containsKey("level") || "".equals(parsedMessage.get("level")) || "info".equals(parsedMessage.get("level"))) { + out.println(translatedMessage); + } else { + err.println(translatedMessage); + } return; } if (parent != null) { parent.message(s); } else { - ps.println(s); + out.println(s); } } } diff --git a/build/arduino-builder-linux32-1.3.6.tar.bz2.sha b/build/arduino-builder-linux32-1.3.6.tar.bz2.sha deleted file mode 100644 index d06ad10a6..000000000 --- a/build/arduino-builder-linux32-1.3.6.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -3937100dc54c86cf2c29759e8ea510a05a09baf5 diff --git a/build/arduino-builder-linux32-1.3.7.tar.bz2.sha b/build/arduino-builder-linux32-1.3.7.tar.bz2.sha new file mode 100644 index 000000000..657c24c36 --- /dev/null +++ b/build/arduino-builder-linux32-1.3.7.tar.bz2.sha @@ -0,0 +1 @@ +616acac0908c873b01b627a7902d4ffe454048bd diff --git a/build/arduino-builder-linux64-1.3.6.tar.bz2.sha b/build/arduino-builder-linux64-1.3.6.tar.bz2.sha deleted file mode 100644 index 131d6eced..000000000 --- a/build/arduino-builder-linux64-1.3.6.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -855b728e5515e2db1a09fe9e31b359a2f9d82689 diff --git a/build/arduino-builder-linux64-1.3.7.tar.bz2.sha b/build/arduino-builder-linux64-1.3.7.tar.bz2.sha new file mode 100644 index 000000000..88592822a --- /dev/null +++ b/build/arduino-builder-linux64-1.3.7.tar.bz2.sha @@ -0,0 +1 @@ +5b427ca5f56cd38ac90b0cf2beb236dde6d7e576 diff --git a/build/arduino-builder-macosx-1.3.6.tar.bz2.sha b/build/arduino-builder-macosx-1.3.6.tar.bz2.sha deleted file mode 100644 index 07f8252b1..000000000 --- a/build/arduino-builder-macosx-1.3.6.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -635eac9c0cc8eb98973cf2fc1c851af812c99ec2 diff --git a/build/arduino-builder-macosx-1.3.7.tar.bz2.sha b/build/arduino-builder-macosx-1.3.7.tar.bz2.sha new file mode 100644 index 000000000..b5e653cde --- /dev/null +++ b/build/arduino-builder-macosx-1.3.7.tar.bz2.sha @@ -0,0 +1 @@ +ae2c591c663ce417c03bd04cb119ae2bc721d379 diff --git a/build/arduino-builder-windows-1.3.6.zip.sha b/build/arduino-builder-windows-1.3.6.zip.sha deleted file mode 100644 index f04887abf..000000000 --- a/build/arduino-builder-windows-1.3.6.zip.sha +++ /dev/null @@ -1 +0,0 @@ -1385e473a0d09a0c43fb6a7e3a934cd97f662460 diff --git a/build/arduino-builder-windows-1.3.7.zip.sha b/build/arduino-builder-windows-1.3.7.zip.sha new file mode 100644 index 000000000..26408fb3c --- /dev/null +++ b/build/arduino-builder-windows-1.3.7.zip.sha @@ -0,0 +1 @@ +6ec1252e3d8c5d7975b89eb221854ed3c0d7494f diff --git a/build/build.xml b/build/build.xml index 235e5e3cb..aece76e3a 100644 --- a/build/build.xml +++ b/build/build.xml @@ -73,7 +73,7 @@ - +