From 3012503417562f24f1479c10bde1b86da1917817 Mon Sep 17 00:00:00 2001 From: zongyu Date: Thu, 20 Aug 2020 18:50:38 +0800 Subject: accept multiple --portage-trees while generating cache Signed-off-by: zongyu --- src/main/java/org/gentoo/java/ebuilder/Config.java | 10 +++++----- src/main/java/org/gentoo/java/ebuilder/Main.java | 19 +++++++++++-------- .../gentoo/java/ebuilder/portage/PortageParser.java | 8 +++++--- src/main/resources/usage.txt | 4 ++-- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java b/src/main/java/org/gentoo/java/ebuilder/Config.java index 4502ab3..e9396ca 100644 --- a/src/main/java/org/gentoo/java/ebuilder/Config.java +++ b/src/main/java/org/gentoo/java/ebuilder/Config.java @@ -88,7 +88,7 @@ public class Config { /** * Path to portage tree. */ - private Path portageTree; + private SortedSet portageTree = new TreeSet<>(); /** * Whether ebuild cache should be refreshed. */ @@ -365,17 +365,17 @@ public class Config { * * @return {@link #portageTree} */ - public Path getPortageTree() { + public SortedSet getPortageTree() { return portageTree; } /** - * Setter for {@link #portageTree}. + * Add portageTrees to {@link #portageTree}. * * @param portageTree {@link #portageTree} */ - public void setPortageTree(final Path portageTree) { - this.portageTree = portageTree; + public void addPortageTree(final Path portageTree) { + this.portageTree.add(portageTree); } /** diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java b/src/main/java/org/gentoo/java/ebuilder/Main.java index 999f741..6aaf24a 100644 --- a/src/main/java/org/gentoo/java/ebuilder/Main.java +++ b/src/main/java/org/gentoo/java/ebuilder/Main.java @@ -7,6 +7,7 @@ import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URI; import java.net.URISyntaxException; +import java.nio.file.Path; import java.nio.file.Paths; import java.text.MessageFormat; import java.util.List; @@ -63,16 +64,18 @@ public class Main { */ private static void checkArgs(final Config config) { if (config.isRefreshCache()) { - if (config.getPortageTree() == null) { - config.setPortageTree(Paths.get("/usr/portage")); + if (config.getPortageTree().isEmpty()) { + config.addPortageTree(Paths.get("/usr/portage")); } - if (!config.getPortageTree().toFile().exists()) { - config.getErrorWriter().println("ERROR: Portage tree " - + config.getPortageTree() + " does not exist."); - Runtime.getRuntime().exit(1); + for (Path portageTree : config.getPortageTree()) { + if (!portageTree.toFile().exists()) { + config.getErrorWriter().println("ERROR: Portage tree " + + portageTree + " does not exist."); + Runtime.getRuntime().exit(1); + } } - } else if (config.getPortageTree() != null) { + } else if (!config.getPortageTree().isEmpty()) { config.getErrorWriter().println("WARNING: Portage tree is used " + "only when refreshing cache."); } @@ -277,7 +280,7 @@ public class Main { case "--portage-tree": case "-t": i++; - config.setPortageTree(Paths.get(args[i]).toAbsolutePath(). + config.addPortageTree(Paths.get(args[i]).toAbsolutePath(). normalize()); break; case "--cache-file": diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java index b48e0d2..a1a7075 100644 --- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java +++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java @@ -139,9 +139,11 @@ public class PortageParser { processedEbuilds = 0; eclassesCounts.clear(); - config.getStdoutWriter().println("Parsing portage tree @ " - + config.getPortageTree() + " ..."); - parseCategories(config.getPortageTree()); + for (Path portageTree : config.getPortageTree()) { + config.getStdoutWriter().println("Parsing portage tree @ " + + portageTree + " ..."); + parseCategories(portageTree); + } final long endTimestamp = System.currentTimeMillis(); diff --git a/src/main/resources/usage.txt b/src/main/resources/usage.txt index e48e3f9..b197a39 100644 --- a/src/main/resources/usage.txt +++ b/src/main/resources/usage.txt @@ -22,8 +22,8 @@ Generating ebuild: Refreshing cache: --portage-tree|-t path to portage tree that should be parsed - when refreshing cache (default is - /usr/portage) + when refreshing cache (can be specified multiple + times, default is /usr/portage) --refresh-cache|-c refreshes java ebuild cache Common: -- cgit v1.2.3-65-gdbad