aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiroslav Šulc <fordfrog@gentoo.org>2019-11-01 21:21:00 +0100
committerMiroslav Šulc <fordfrog@gentoo.org>2019-11-01 21:21:00 +0100
commitc0c86c63b7847b9d10d53c51e182df3c53263e4f (patch)
tree6ef228a153d7cbac20ba27f7866af0b0e3c6af42
parentimproved ebuild parsing output info format (diff)
downloadjava-ebuilder-c0c86c63b7847b9d10d53c51e182df3c53263e4f.tar.gz
java-ebuilder-c0c86c63b7847b9d10d53c51e182df3c53263e4f.tar.bz2
java-ebuilder-c0c86c63b7847b9d10d53c51e182df3c53263e4f.zip
enhanced maven cache so that it also contains main java eclass + added java eclass stats
Signed-off-by: Miroslav Šulc <fordfrog@gentoo.org>
-rw-r--r--src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java5
-rw-r--r--src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java29
-rw-r--r--src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java84
3 files changed, 96 insertions, 22 deletions
diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java
index 0aa33c5..4e8767e 100644
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java
@@ -102,7 +102,10 @@ public class MavenCache {
new FileReader(config.getCacheFile().toFile()))) {
String line = reader.readLine();
- if (!PortageParser.CACHE_VERSION.equals(line)) {
+ if ("1.0".equals(line)) {
+ config.getStdoutWriter().print("(warning: format is not "
+ + "up-to-date, consider refreshing the cache)...");
+ } else if (!PortageParser.CACHE_VERSION.equals(line)) {
config.getErrorWriter().println("ERROR: Unsupported version of "
+ "cache. Please refresh the cache using command line "
+ "switch --refresh-cache.");
diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
index 17bce6b..feff43d 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
@@ -20,6 +20,10 @@ public class CacheItem {
*/
private final String groupId;
/**
+ * Main Java eclass inherited.
+ */
+ private final String javaEclass;
+ /**
* Maven version (of package jar).
*/
private final String mavenVersion;
@@ -56,11 +60,12 @@ public class CacheItem {
* @param groupId {@link #groupId}
* @param artifactId {@link #artifactId}
* @param mavenVersion {@link #mavenVersion}
+ * @param javaEclass {@link #javaEclass}
*/
public CacheItem(final String category, final String pkg,
final String version, final String slot, final String useFlag,
final String groupId, final String artifactId,
- final String mavenVersion) {
+ final String mavenVersion, final String javaEclass) {
this.category = category;
this.pkg = pkg;
this.version = version;
@@ -69,6 +74,7 @@ public class CacheItem {
this.groupId = groupId;
this.artifactId = artifactId;
this.mavenVersion = mavenVersion;
+ this.javaEclass = javaEclass;
parsedMavenVersion = mavenVersion == null
? null : new MavenVersion(mavenVersion);
@@ -95,14 +101,20 @@ public class CacheItem {
}
if (parts.length > 5) {
- groupId = parts[5];
- artifactId = parts[6];
- mavenVersion = parts[7];
+ groupId = parts[5].isEmpty() ? null : parts[5];
+ artifactId = parts[6].isEmpty() ? null : parts[6];
+ mavenVersion = parts[7].isEmpty() ? null : parts[7];
} else {
groupId = null;
artifactId = null;
mavenVersion = null;
}
+
+ if (parts.length > 8) {
+ javaEclass = parts[8].isEmpty() ? null : parts[8];
+ } else {
+ javaEclass = null;
+ }
} catch (final ArrayIndexOutOfBoundsException ex) {
throw new RuntimeException("Failed to parse cache line: " + line,
ex);
@@ -140,6 +152,15 @@ public class CacheItem {
}
/**
+ * Getter for {@link #javaEclass}.
+ *
+ * @return {@link #javaEclass}
+ */
+ public String getJavaEclass() {
+ return javaEclass;
+ }
+
+ /**
* Getter for {@link #mavenVersion}.
*
* @return {@link #mavenVersion}
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 a85fe6c..8d49411 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -28,7 +28,7 @@ public class PortageParser {
/**
* Cache version.
*/
- public static final String CACHE_VERSION = "1.0";
+ public static final String CACHE_VERSION = "1.1";
/**
* Current ant utilities eclass name.
*/
@@ -117,6 +117,29 @@ public class PortageParser {
*/
private final List<CacheItem> cacheItems = new ArrayList<>(40_000);
/**
+ * Count of ebuilds inheriting {@link #ECLASS_ANT_TASKS} as the main eclass.
+ */
+ private int eclassAntTasksCount;
+ /**
+ * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG} as the main eclass.
+ */
+ private int eclassJavaPkgCount;
+ /**
+ * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_OPT} as the main
+ * eclass.
+ */
+ private int eclassJavaPkgOptCount;
+ /**
+ * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_SIMPLE} as the main
+ * eclass.
+ */
+ private int eclassJavaPkgSimpleCount;
+ /**
+ * Count of ebuilds inheriting {@link #ECLASS_JAVA_UTILS} as the main
+ * eclass.
+ */
+ private int eclassJavaUtilsCount;
+ /**
* Number of processed categories. Updated during parsing the tree.
*/
private int processedCategories;
@@ -141,6 +164,11 @@ public class PortageParser {
processedCategories = 0;
processedPackages = 0;
processedEbuilds = 0;
+ eclassAntTasksCount = 0;
+ eclassJavaPkgCount = 0;
+ eclassJavaPkgOptCount = 0;
+ eclassJavaPkgSimpleCount = 0;
+ eclassJavaUtilsCount = 0;
config.getStdoutWriter().println("Parsing portage tree @ "
+ config.getPortageTree() + " ...");
@@ -150,9 +178,14 @@ public class PortageParser {
config.getStdoutWriter().println(MessageFormat.format(
"Parsed {0} categories {1} packages {2} ebuilds in {3}ms and "
- + "found {4} java ebuilds",
+ + "found {4} java ebuilds (main java eclass: {5} = {6}, "
+ + "{7} = {8}, {9} = {10}, {11} = {12}, {13} = {14})",
processedCategories, processedPackages, processedEbuilds,
- endTimestamp - startTimestamp, cacheItems.size()));
+ endTimestamp - startTimestamp, cacheItems.size(),
+ ECLASS_ANT_TASKS, eclassAntTasksCount, ECLASS_JAVA_PKG,
+ eclassJavaPkgCount, ECLASS_JAVA_PKG_OPT, eclassJavaPkgOptCount,
+ ECLASS_JAVA_PKG_SIMPLE, eclassJavaPkgSimpleCount,
+ ECLASS_JAVA_UTILS, eclassJavaUtilsCount));
config.getStdoutWriter().print("Writing cache file...");
writeCacheFile(config);
@@ -325,7 +358,25 @@ public class PortageParser {
}
cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
- groupId, artifactId, mavenVersion));
+ groupId, artifactId, mavenVersion, eclass));
+
+ switch (eclass) {
+ case ECLASS_ANT_TASKS:
+ eclassAntTasksCount++;
+ break;
+ case ECLASS_JAVA_PKG:
+ eclassJavaPkgCount++;
+ break;
+ case ECLASS_JAVA_PKG_OPT:
+ eclassJavaPkgOptCount++;
+ break;
+ case ECLASS_JAVA_PKG_SIMPLE:
+ eclassJavaPkgSimpleCount++;
+ break;
+ case ECLASS_JAVA_UTILS:
+ eclassJavaUtilsCount++;
+ break;
+ }
}
/**
@@ -437,7 +488,7 @@ public class PortageParser {
Charset.forName("UTF-8"))) {
writer.write(CACHE_VERSION);
writer.write("\n#category:pkg:version:slot:useFlag:groupId:"
- + "artifactId:mavenVersion\n");
+ + "artifactId:mavenVersion:javaEclass\n");
for (final CacheItem cacheItem : cacheItems) {
writer.write(cacheItem.getCategory());
@@ -450,18 +501,17 @@ public class PortageParser {
writer.write(':');
writer.write(cacheItem.getUseFlag() == null
? "" : cacheItem.getUseFlag());
-
- if (cacheItem.getGroupId() != null) {
- writer.write(':');
- writer.write(cacheItem.getGroupId());
- writer.write(':');
- writer.write(cacheItem.getArtifactId());
-
- if (cacheItem.getMavenVersion() != null) {
- writer.write(':');
- writer.write(cacheItem.getMavenVersion());
- }
- }
+ writer.write(':');
+ writer.write(cacheItem.getGroupId() == null
+ ? "" : cacheItem.getGroupId());
+ writer.write(':');
+ writer.write(cacheItem.getArtifactId() == null
+ ? "" : cacheItem.getArtifactId());
+ writer.write(':');
+ writer.write(cacheItem.getMavenVersion() == null
+ ? "" : cacheItem.getMavenVersion());
+ writer.write(':');
+ writer.write(cacheItem.getJavaEclass());
writer.write('\n');
}