From d3cb01424f31a76cf1bf6b418b6bd14bae53c957 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 8 Oct 2018 09:51:18 +0200 Subject: [PATCH 1/2] Provide actual string to findPlatform for Optional Fix https://github.com/arduino/Arduino/issues/8034 --- app/src/processing/app/Base.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index be15eefd17e..14c3d33aff2 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -41,6 +41,9 @@ import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.lang3.StringUtils; + +import com.github.zafarkhaja.semver.Version; + import processing.app.debug.TargetBoard; import processing.app.debug.TargetPackage; import processing.app.debug.TargetPlatform; @@ -304,8 +307,9 @@ public Base(String[] args) throws Exception { String[] boardToInstallParts = parser.getBoardToInstall().split(":"); ContributedPlatform selected = null; - if (boardToInstallParts.length == 3) { - selected = indexer.getIndex().findPlatform(boardToInstallParts[0], boardToInstallParts[1], VersionHelper.valueOf(boardToInstallParts[2]).toString()); + if (boardToInstallParts.length == 3 && VersionHelper.valueOf(boardToInstallParts[2]).isPresent()) { + Version vs = VersionHelper.valueOf(boardToInstallParts[2]).get(); + selected = indexer.getIndex().findPlatform(boardToInstallParts[0], boardToInstallParts[1], vs.toString()); } else if (boardToInstallParts.length == 2) { List platformsByName = indexer.getIndex().findPlatforms(boardToInstallParts[0], boardToInstallParts[1]); Collections.sort(platformsByName, new DownloadableContributionVersionComparator()); From 6a1c1f4df964aa230d6b22d606cb83b5578190dc Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Mon, 8 Oct 2018 11:51:34 +0200 Subject: [PATCH 2/2] Invalid use of toString in Optional It should be used on the actual Version. Fix #8034 --- app/src/processing/app/Base.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index 14c3d33aff2..8f74b3a1049 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -74,6 +74,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import static processing.app.I18n.format; import static processing.app.I18n.tr; @@ -307,9 +308,13 @@ public Base(String[] args) throws Exception { String[] boardToInstallParts = parser.getBoardToInstall().split(":"); ContributedPlatform selected = null; - if (boardToInstallParts.length == 3 && VersionHelper.valueOf(boardToInstallParts[2]).isPresent()) { - Version vs = VersionHelper.valueOf(boardToInstallParts[2]).get(); - selected = indexer.getIndex().findPlatform(boardToInstallParts[0], boardToInstallParts[1], vs.toString()); + if (boardToInstallParts.length == 3) { + Optional version = VersionHelper.valueOf(boardToInstallParts[2]); + if (!version.isPresent()) { + System.out.println(format(tr("Invalid version {0}"), boardToInstallParts[2])); + System.exit(1); + } + selected = indexer.getIndex().findPlatform(boardToInstallParts[0], boardToInstallParts[1], version.get().toString()); } else if (boardToInstallParts.length == 2) { List platformsByName = indexer.getIndex().findPlatforms(boardToInstallParts[0], boardToInstallParts[1]); Collections.sort(platformsByName, new DownloadableContributionVersionComparator()); @@ -350,7 +355,12 @@ public Base(String[] args) throws Exception { ContributedLibrary selected = null; if (libraryToInstallParts.length == 2) { - selected = indexer.getIndex().find(libraryToInstallParts[0], VersionHelper.valueOf(libraryToInstallParts[1]).toString()); + Optional version = VersionHelper.valueOf(libraryToInstallParts[1]); + if (!version.isPresent()) { + System.out.println(format(tr("Invalid version {0}"), libraryToInstallParts[1])); + System.exit(1); + } + selected = indexer.getIndex().find(libraryToInstallParts[0], version.get().toString()); } else if (libraryToInstallParts.length == 1) { List librariesByName = indexer.getIndex().find(libraryToInstallParts[0]); Collections.sort(librariesByName, new DownloadableContributionVersionComparator());