[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2023-04-15 Thread Miroslav Šulc
commit: 7f5126275eb7178328b1ff4bea732e06746b
Author: Yuan Liao  gmail  com>
AuthorDate: Wed Jun 23 21:38:30 2021 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Sat Apr 15 08:13:53 2023 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=7f512627

Add support for ebuild variables in MAVEN_PROVIDES

Signed-off-by: Yuan Liao  gmail.com>
Closes: https://github.com/gentoo/java-ebuilder/pull/11
Signed-off-by: Miroslav Šulc  gentoo.org>

 src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java | 3 +++
 1 file changed, 3 insertions(+)

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 ff4acf3..8026542 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -394,6 +394,9 @@ public class PortageParser {
 groupId, artifactId, mavenVersion, eclasses));
 
 for (String providedId: mavenProvide) {
+// Allow declarations like MAVEN_PROVIDES="groupId:${PN}:${PV}"
+providedId = providedId.replaceAll("\\$(\\{PN\\}|PN)", pkg).
+replaceAll("\\$(\\{PV\\}|PV)", pv);
 final String[] parts = providedId.split(":");
 cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
 parts[0], parts[1], parts[2], eclasses));



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2023-04-15 Thread Miroslav Šulc
commit: 3dc12a1cf977e05cd3ff4ef0c61267c5e4abf395
Author: Yuan Liao  gmail  com>
AuthorDate: Fri Jun 11 20:52:25 2021 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Sat Apr 15 08:13:52 2023 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=3dc12a1c

Add support for multi-line MAVEN_PROVIDES definition

Closes: https://bugs.gentoo.org/903666
Signed-off-by: Yuan Liao  gmail.com>
Signed-off-by: Miroslav Šulc  gentoo.org>

 .../java/ebuilder/portage/PortageParser.java   | 81 ++
 1 file changed, 52 insertions(+), 29 deletions(-)

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 a1a7075..ff4acf3 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -263,8 +263,9 @@ public class PortageParser {
 String groupId = null;
 String artifactId = null;
 String mavenVersion = null;
-String[] mavenProvide = null;
+List mavenProvide = new ArrayList<>();
 
+boolean readingMultiLineMavenProvide = false;
 try (final BufferedReader reader = new BufferedReader(
 new InputStreamReader(Files.newInputStream(ebuild.toPath(),
 StandardOpenOption.READ {
@@ -282,31 +283,55 @@ public class PortageParser {
 }
 
 if (!line.isEmpty()) {
-final Matcher matcher = PATTERN_VARIABLE.matcher(line);
-
-if (matcher.matches()) {
-variables.put(matcher.group(1),
-matcher.group(2).replaceAll("(^\"|\"$)", ""));
-}
+// Check if a multi-line MAVEN_PROVIDES declaration is
+// being read
+if (readingMultiLineMavenProvide) {
+if (!line.startsWith("\"")) {
+// Line contains an artifact ID
+mavenProvide.add(line.replace("\"", ""));
+}
+if (line.contains("\"")) {
+// Closing double quote
+readingMultiLineMavenProvide = false;
+}
+} else {
+// Check if the line contains variable declaration
+final Matcher matcher = PATTERN_VARIABLE.matcher(line);
 
-if (line.startsWith("inherit ")) {
-eclasses = getJavaInheritEclasses(line);
+if (matcher.matches()) {
+variables.put(matcher.group(1),
+matcher.group(2).replaceAll("(^\"|\"$)", 
""));
+}
 
-if (eclasses == null || eclasses.isEmpty()) {
-return;
+if (line.startsWith("inherit ")) {
+eclasses = getJavaInheritEclasses(line);
+
+if (eclasses == null || eclasses.isEmpty()) {
+return;
+}
+} else if (line.startsWith("SLOT=")) {
+slot = line.substring("SLOT=".length()).replace(
+"\"", "").replaceAll("/.*", "");
+} else if (line.startsWith("JAVA_PKG_OPT_USE=")) {
+useFlag = 
line.substring("JAVA_PKG_OPT_USE=".length()).
+replace("\"", "");
+} else if (line.startsWith("MAVEN_ID=")) {
+mavenId = line.substring("MAVEN_ID=".length()).
+replace("\"", "");
+} else if (line.startsWith("MAVEN_PROVIDES=")) {
+boolean atMostOneDoubleQuote =
+line.indexOf("\"") == 
line.lastIndexOf("\"");
+line = line.substring("MAVEN_PROVIDES=".length());
+if (!atMostOneDoubleQuote || !line.endsWith("\"")) 
{
+// Line contains an artifact ID
+mavenProvide.addAll(Arrays.asList(
+line.replace("\"", "").split(" ")));
+}
+if (atMostOneDoubleQuote && line.contains("\"")) {
+// Only one double quote -- multi-line 
declaration
+readingMultiLineMavenProvide = true;
+}
 }
-} else if (line.startsWith("SLOT=")) {
-slot = line.substring("SLOT=".length()).replace(

[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/, ...

2020-07-12 Thread Miroslav Šulc
commit: 40ff29ff64cb6cf411682bfeca58817a24bc1e05
Author: zongyu  gmail  com>
AuthorDate: Sat Jul 11 15:02:22 2020 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Sat Jul 11 15:02:22 2020 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=40ff29ff

add more command-line switches

--binjar-uri, which specifies uri of the pre-compiled jar

support installing binary maven packge
support future src_test(), which will
compare Gentoo-compiled jars and Maven
Central distributed jars

Signed-off-by: zongyu  gmail.com>

 src/main/java/org/gentoo/java/ebuilder/Config.java | 36 
 src/main/java/org/gentoo/java/ebuilder/Main.java   | 13 +-
 .../gentoo/java/ebuilder/maven/MavenEbuilder.java  | 50 --
 .../java/ebuilder/portage/PortageParser.java   |  4 +-
 4 files changed, 97 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java 
b/src/main/java/org/gentoo/java/ebuilder/Config.java
index 53af30f..27dbc7c 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Config.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Config.java
@@ -21,6 +21,14 @@ public class Config {
  */
 private Path cacheFile = Paths.get(System.getProperty("user.home"),
 ".java-ebuilder/cache");
+/**
+ * URI that goes to pre-compiled Maven Jar.
+ */
+private URI binjarUri;
+/**
+ * whether binjarUri is set.
+ */
+private boolean binjarUriExists;
 /**
  * URI that goes to SRC_URI.
  */
@@ -134,6 +142,34 @@ public class Config {
 this.cacheFile = cacheFile;
 }
 
+/**
+ * Getter for {@link #binjarUri}.
+ *
+ * @return {@link #binjarUri}
+ */
+public URI getBinjarUri() {
+return binjarUri;
+}
+
+/**
+ * Getter for {@link #binjarUriExists}.
+ *
+ * @return {@link #binjarUriExists}
+ */
+public boolean hasBinjarUri() {
+return binjarUriExists;
+}
+
+/**
+ * Setter for {@link #binjarUri}.
+ *
+ * @param binjarUri {@link #binjarUri}
+ */
+public void setBinjarUri(final URI binjarUri) {
+this.binjarUri = binjarUri;
+this.binjarUriExists = true;
+}
+
 /**
  * Getter for {@link #downloadUri}.
  *

diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java 
b/src/main/java/org/gentoo/java/ebuilder/Main.java
index 0b4eff6..6843af7 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Main.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Main.java
@@ -213,6 +213,17 @@ public class Main {
 final String arg = args[i];
 
 switch (arg) {
+case "--binjar-uri":
+i++;
+
+try {
+config.setBinjarUri(new URI(args[i]));
+} catch (final URISyntaxException ex) {
+config.getErrorWriter().println("ERROR: BINJAR_URI " + 
args[i]
++ " is not valid.");
+}
+
+break;
 case "--download-uri":
 case "-u":
 i++;
@@ -220,7 +231,7 @@ public class Main {
 try {
 config.setDownloadUri(new URI(args[i]));
 } catch (final URISyntaxException ex) {
-config.getErrorWriter().println("ERROR: URI " + args[i]
+config.getErrorWriter().println("ERROR: SRC_URI " + 
args[i]
 + " is not valid.");
 }
 

diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java 
b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
index 48920e5..08a5f99 100644
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
@@ -235,6 +235,27 @@ public class MavenEbuilder {
 return srcUri + " -> " + "${P}" + matcher.group(1);
 }
 
+/**
+ * Rename binjar file to ${P}-bin.ext
+ *
+ * @param binjarUri binjar URI
+ *
+ * @return updated binjar URI
+ */
+private String improveBinjarUri(final String binjarUri) {
+
+final Matcher matcher = PATTERN_TARBALL_EXTENSION.matcher(binjarUri);
+
+/**
+ * We do not know how to get the extension so assume it will be jar
+ */
+if (!matcher.matches()) {
+return binjarUri + " -> " + "${P}-bin.jar";
+}
+
+return binjarUri + " -> " + "${P}-bin" + matcher.group(1);
+}
+
 /**
  * If the tarball name does not match pattern ${P}-test.ext then we will 
update
  * it to store the tarball as ${P}-test.ext.
@@ -507,6 +528,10 @@ public class MavenEbuilder {
 mavenProjects, config.getForceMinJavaVersion()));
 writer.println(":*");
 
+if (config.hasBinjarUri()) {
+

[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2020-07-06 Thread Miroslav Šulc
commit: eceb93b00b8a1b4c8841f43bf61347fbb613f249
Author: zongyu  gmail  com>
AuthorDate: Mon Jun 29 08:22:46 2020 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Mon Jul  6 09:48:27 2020 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=eceb93b0

enable java-ebuilder to read metadata of a Gentoo package, and get a proper SLOT

Signed-off-by: zongyu  gmail.com>

 .../java/ebuilder/portage/PortageParser.java   | 44 +-
 1 file changed, 43 insertions(+), 1 deletion(-)

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 fd9e2c4..96e0c06 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -8,6 +8,7 @@ import java.io.OutputStreamWriter;
 import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
 import java.text.MessageFormat;
 import java.util.ArrayList;
@@ -251,6 +252,8 @@ public class PortageParser {
 final String pkg = ebuild.getParentFile().getName();
 final String version = filename.substring(pkg.length() + 1);
 final Map variables = new HashMap<>(20);
+final Path ebuildMetadata = Paths.get(ebuild.getParent(), "..", "..",
+"metadata", "md5-cache", category, filename).normalize();
 List eclasses = null;
 String slot = "0";
 String useFlag = null;
@@ -328,7 +331,12 @@ public class PortageParser {
 pv = version.substring(0, pos);
 }
 
-slot = processSlot(slot, pv, variables);
+if (Files.exists(ebuildMetadata)) {
+slot = processSlot(slot, ebuildMetadata);
+}
+else {
+slot = processSlot(slot, pv, variables);
+}
 
 if (mavenId != null) {
 mavenId = mavenId.replaceAll("\\$(\\{PN\\}|PN)", pkg).
@@ -388,6 +396,40 @@ public class PortageParser {
 }
 }
 
+/**
+ * Processes various instructions in SLOT string.
+ *
+ * @param slot   SLOT string
+ * @param ebuildMetadata path to the metadata of the Gentoo package
+ *
+ * @return processed SLOT string
+ */
+private String processSlot(final String slot,
+final Path ebuildMetadata) {
+//final metadata = new File(ebuildMetadata.toString());
+   String result = slot;
+try (final BufferedReader reader = new BufferedReader(
+new InputStreamReader(Files.newInputStream(ebuildMetadata,
+StandardOpenOption.READ {
+String line = reader.readLine();
+while (line != null) {
+line = line.trim();
+
+if (!line.isEmpty()) {
+if (line.startsWith("SLOT=")) {
+result = line.substring("SLOT=".length()).replace(
+"\"", "").replaceAll("/.*", "");
+}
+
+line = reader.readLine();
+}
+}
+} catch (final IOException ex) {
+throw new RuntimeException("Failed to read ebuild", ex);
+}
+   return result;
+}
+
 /**
  * Processes various instructions in SLOT string.
  *



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2020-07-06 Thread Miroslav Šulc
commit: 8dbb7efca5167ec4dd00da315582af83cae445b8
Author: zongyu  gmail  com>
AuthorDate: Mon Jun 15 01:45:56 2020 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Mon Jul  6 09:48:27 2020 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=8dbb7efc

modify PATTERN_VERSION to match things like "r4"

Signed-off-by: zongyu  gmail.com>

 src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java 
b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
index 26b06b9..71da8a6 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -14,7 +14,7 @@ public class MavenVersion implements Comparable 
{
  * Pattern for parsing maven version number.
  */
 private static final Pattern PATTERN_VERSION = Pattern.compile(
-
"^v?(\\d+)(?:\\.(\\d+))?(?:(?:\\.|b|beta)(\\d+))?(?:[\\.-](.*))?$");
+
"^[vr]?(\\d+)(?:\\.(\\d+))?(?:(?:\\.|b|beta)(\\d+))?(?:[\\.-]?(.*))?$");
 /**
  * Pattern for parsing maven version range.
  */



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2020-07-06 Thread Miroslav Šulc
commit: c3771a74b781e7ebc97065e8201fd3a8e45a43d1
Author: zongyu  gmail  com>
AuthorDate: Thu Jun 18 07:25:44 2020 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Mon Jul  6 09:48:27 2020 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=c3771a74

fix bugs of MAVEN_PROVIDE

Signed-off-by: zongyu  gmail.com>

 src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

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 a222956..fd9e2c4 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -358,9 +358,9 @@ public class PortageParser {
 cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
 groupId, artifactId, mavenVersion, eclasses));
 
-   if (mavenP != null) {
+   if (mavenProvide != null) {
 for (String providedId: mavenProvide) {
-parts = mavenProvide.split(":")
+final String[] parts = providedId.split(":");
 cacheItems.add(new CacheItem(category, pkg, version, slot, 
useFlag,
 parts[0], parts[1], parts[2], eclasses));
 }



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2020-07-06 Thread Miroslav Šulc
commit: 21791ad72a6db7e9f809df55a74b52746dad801a
Author: zongyu  gmail  com>
AuthorDate: Mon Jun 15 01:37:30 2020 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Mon Jul  6 09:48:27 2020 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=21791ad7

modify PATTERN_VERSION_RANGE to match things like "[3.0, )"

Signed-off-by: zongyu  gmail.com>

 src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java 
b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
index 1de54e1..26b06b9 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -19,7 +19,7 @@ public class MavenVersion implements Comparable 
{
  * Pattern for parsing maven version range.
  */
 private static final Pattern PATTERN_VERSION_RANGE
-= Pattern.compile("\\[.*, ?(.*?)\\]");
+= Pattern.compile("[\\[\\(](.*), ?(.*?)[\\]\\)]");
 /**
  * Incremental version number.
  */



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2020-07-06 Thread Miroslav Šulc
commit: a1b98fecda5e9d9c832b73305fb47edc604dd06d
Author: zongyu  gmail  com>
AuthorDate: Fri Jun 19 05:37:34 2020 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Mon Jul  6 09:48:27 2020 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=a1b98fec

MavenVersion.class enhancement:

make MavenVersion.class able to compare incremental version
make it convert qualifier to lowercase to avoid the situation when
  maintainer mixes uppercase and lowercase

Signed-off-by: zongyu  gmail.com>

 src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java 
b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
index 71da8a6..42cd9cd 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -70,7 +70,7 @@ public class MavenVersion implements Comparable 
{
 ? 0 : Integer.parseInt(matcher.group(2), 10);
 incrementalVersion = matcher.group(3) == null
 ? 0 : Integer.parseInt(matcher.group(3), 10);
-qualifier = matcher.group(4) == null ? "" : matcher.group(4);
+qualifier = matcher.group(4) == null ? "" : 
matcher.group(4).toLowerCase();
 }
 
 @Override
@@ -81,6 +81,8 @@ public class MavenVersion implements Comparable 
{
 return 
Integer.valueOf(majorVersion).compareTo(o.getMajorVersion());
 } else if (minorVersion != o.getMinorVersion()) {
 return 
Integer.valueOf(minorVersion).compareTo(o.getMinorVersion());
+} else if (incrementalVersion != o.getIncrementalVersion()) {
+return 
Integer.valueOf(incrementalVersion).compareTo(o.getIncrementalVersion());
 } else {
 return qualifier.compareTo(o.getQualifier());
 }



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2020-07-06 Thread Miroslav Šulc
commit: 59131006cb675af7b176225af7a670e2803649d8
Author: zongyu  gmail  com>
AuthorDate: Thu Jun 18 07:11:21 2020 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Mon Jul  6 09:48:27 2020 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=59131006

initial code to support MAVEN_PROVIDE

Signed-off-by: zongyu  gmail.com>

 .../java/org/gentoo/java/ebuilder/portage/PortageParser.java  | 11 +++
 1 file changed, 11 insertions(+)

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 9da0fb7..a222956 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -258,6 +258,7 @@ public class PortageParser {
 String groupId = null;
 String artifactId = null;
 String mavenVersion = null;
+   String[] mavenProvide = null;
 
 try (final BufferedReader reader = new BufferedReader(
 new InputStreamReader(Files.newInputStream(ebuild.toPath(),
@@ -298,6 +299,9 @@ public class PortageParser {
 } else if (line.startsWith("MAVEN_ID=")) {
 mavenId = line.substring("MAVEN_ID=".length()).
 replace("\"", "");
+} else if (line.startsWith("MAVEN_PROVIDE=")) {
+mavenProvide = 
line.substring("MAVEN_PROVIDE=".length()).
+   replace("\"", "").split(" ");
 }
 }
 
@@ -354,6 +358,13 @@ public class PortageParser {
 cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
 groupId, artifactId, mavenVersion, eclasses));
 
+   if (mavenP != null) {
+for (String providedId: mavenProvide) {
+parts = mavenProvide.split(":")
+cacheItems.add(new CacheItem(category, pkg, version, slot, 
useFlag,
+parts[0], parts[1], parts[2], eclasses));
+}
+}
 countEclasses(eclasses);
 }
 



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2019-11-03 Thread Miroslav Šulc
commit: 9f694b0493877d9bf6f86b8be26f9e98a3d80eb4
Author: Miroslav Šulc  gentoo  org>
AuthorDate: Sun Nov  3 13:54:04 2019 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Sun Nov  3 13:54:04 2019 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=9f694b04

changed handling of java eclasses

1) now parsing all java eclasses
2) all java eclasses are written to the cache file
3) usage of each java eclass is written to the output when regreshing cache

Signed-off-by: Miroslav Šulc  gentoo.org>

 .../gentoo/java/ebuilder/portage/CacheItem.java|  30 ++--
 .../java/ebuilder/portage/PortageParser.java   | 154 +
 2 files changed, 86 insertions(+), 98 deletions(-)

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 feff43d..e48177f 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
@@ -1,5 +1,10 @@
 package org.gentoo.java.ebuilder.portage;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * Container for cache item information.
  *
@@ -20,9 +25,9 @@ public class CacheItem {
  */
 private final String groupId;
 /**
- * Main Java eclass inherited.
+ * List of inherited java eclasses, in the order as they are inherited.
  */
-private final String javaEclass;
+private final List javaEclasses;
 /**
  * Maven version (of package jar).
  */
@@ -60,12 +65,12 @@ public class CacheItem {
  * @param groupId  {@link #groupId}
  * @param artifactId   {@link #artifactId}
  * @param mavenVersion {@link #mavenVersion}
- * @param javaEclass   {@link #javaEclass}
+ * @param javaEclasses {@link #javaEclasses}
  */
 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 javaEclass) {
+final String mavenVersion, final List javaEclasses) {
 this.category = category;
 this.pkg = pkg;
 this.version = version;
@@ -74,7 +79,8 @@ public class CacheItem {
 this.groupId = groupId;
 this.artifactId = artifactId;
 this.mavenVersion = mavenVersion;
-this.javaEclass = javaEclass;
+this.javaEclasses
+= Collections.unmodifiableList(new ArrayList<>(javaEclasses));
 
 parsedMavenVersion = mavenVersion == null
 ? null : new MavenVersion(mavenVersion);
@@ -110,10 +116,10 @@ public class CacheItem {
 mavenVersion = null;
 }
 
-if (parts.length > 8) {
-javaEclass = parts[8].isEmpty() ? null : parts[8];
+if (parts.length > 8 && !parts[0].isEmpty()) {
+javaEclasses = Arrays.asList(parts[8].split(","));
 } else {
-javaEclass = null;
+javaEclasses = null;
 }
 } catch (final ArrayIndexOutOfBoundsException ex) {
 throw new RuntimeException("Failed to parse cache line: " + line,
@@ -152,12 +158,12 @@ public class CacheItem {
 }
 
 /**
- * Getter for {@link #javaEclass}.
+ * Getter for {@link #javaEclasses}.
  *
- * @return {@link #javaEclass}
+ * @return {@link #javaEclasses}
  */
-public String getJavaEclass() {
-return javaEclass;
+public List getJavaEclasses() {
+return Collections.unmodifiableList(javaEclasses);
 }
 
 /**

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 8d49411..9da0fb7 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -11,11 +11,14 @@ import java.nio.file.Path;
 import java.nio.file.StandardOpenOption;
 import java.text.MessageFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 import org.gentoo.java.ebuilder.Config;
 
 /**
@@ -33,22 +36,10 @@ public class PortageParser {
  * Current ant utilities eclass name.
  */
 private static final String ECLASS_ANT_TASKS = "ant-tasks";
-/**
- * Current java package eclass name.
- */
-private static final String ECLASS_JAVA_PKG = "java-pkg-2";
 /**
  * Current java optional package eclass name.
  */
 private static final String ECLASS_JAVA_PKG_OPT = "java-pkg-opt-2";
-/**
- * Current java simple package 

[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/, ...

2019-11-01 Thread Miroslav Šulc
commit: c0c86c63b7847b9d10d53c51e182df3c53263e4f
Author: Miroslav Šulc  gentoo  org>
AuthorDate: Fri Nov  1 20:21:00 2019 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Fri Nov  1 20:21:00 2019 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=c0c86c63

enhanced maven cache so that it also contains main java eclass + added java 
eclass stats

Signed-off-by: Miroslav Šulc  gentoo.org>

 .../org/gentoo/java/ebuilder/maven/MavenCache.java |  5 +-
 .../gentoo/java/ebuilder/portage/CacheItem.java| 29 ++--
 .../java/ebuilder/portage/PortageParser.java   | 84 +-
 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
@@ -19,6 +19,10 @@ public class CacheItem {
  * Maven group id.
  */
 private final String groupId;
+/**
+ * Main Java eclass inherited.
+ */
+private final String javaEclass;
 /**
  * Maven version (of package jar).
  */
@@ -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);
@@ -139,6 +151,15 @@ public class CacheItem {
 return groupId;
 }
 
+/**
+ * Getter for {@link #javaEclass}.
+ *
+ * @return {@link #javaEclass}
+ */
+public String getJavaEclass() {
+return javaEclass;
+}
+
 /**
  * Getter for {@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 

[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/, ...

2019-11-01 Thread Miroslav Šulc
commit: 889bcaf2504570a64c9b0a8e1f22b092a83e0c0c
Author: Miroslav Šulc  gentoo  org>
AuthorDate: Fri Nov  1 19:41:43 2019 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Fri Nov  1 19:41:43 2019 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=889bcaf2

added parsing of ebuild file name components

Signed-off-by: Miroslav Šulc  gentoo.org>

 src/main/java/org/gentoo/java/ebuilder/Config.java | 66 ++
 src/main/java/org/gentoo/java/ebuilder/Main.java   | 30 ++
 .../java/ebuilder/portage/PortageParser.java   | 45 +++
 3 files changed, 141 insertions(+)

diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java 
b/src/main/java/org/gentoo/java/ebuilder/Config.java
index 4127266..9bc98f8 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Config.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Config.java
@@ -28,6 +28,18 @@ public class Config {
  * Path to ebuild file that should be generated.
  */
 private Path ebuild;
+/**
+ * Ebuild name.
+ */
+private String ebuildName;
+/**
+ * Ebuild version excluding suffix.
+ */
+private String ebuildVersion;
+/**
+ * Ebuild version suffix (-r).
+ */
+private String ebuildVersionSuffix;
 /**
  * Writer for errors.
  */
@@ -144,6 +156,60 @@ public class Config {
 this.ebuild = ebuild;
 }
 
+/**
+ * Getter for {@link #ebuildName}.
+ *
+ * @return {@link #ebuildName}
+ */
+public String getEbuildName() {
+return ebuildName;
+}
+
+/**
+ * Setter for {@link #ebuildName}.
+ *
+ * @param ebuildName {@link #ebuildName}
+ */
+public void setEbuildName(final String ebuildName) {
+this.ebuildName = ebuildName;
+}
+
+/**
+ * Getter for {@link #ebuildVersion}.
+ *
+ * @return {@link #ebuildVersion}
+ */
+public String getEbuildVersion() {
+return ebuildVersion;
+}
+
+/**
+ * Setter for {@link #ebuildVersion}.
+ *
+ * @param ebuildVersion {@link #ebuildVersion}
+ */
+public void setEbuildVersion(final String ebuildVersion) {
+this.ebuildVersion = ebuildVersion;
+}
+
+/**
+ * Getter for {@link #ebuildVersionSuffix}.
+ *
+ * @return {@link #ebuildVersionSuffix}
+ */
+public String getEbuildVersionSuffix() {
+return ebuildVersionSuffix;
+}
+
+/**
+ * Setter for {@link #ebuildVersionSuffix}.
+ *
+ * @param ebuildVersionSuffix {@link #ebuildVersionSuffix}
+ */
+public void setEbuildVersionSuffix(final String ebuildVersionSuffix) {
+this.ebuildVersionSuffix = ebuildVersionSuffix;
+}
+
 /**
  * Getter for {@link #errorWriter}.
  *

diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java 
b/src/main/java/org/gentoo/java/ebuilder/Main.java
index 5921ea1..6c5cd13 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Main.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Main.java
@@ -9,6 +9,7 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.nio.file.Paths;
 import java.util.List;
+import java.util.Map;
 import org.gentoo.java.ebuilder.maven.MavenCache;
 import org.gentoo.java.ebuilder.maven.MavenEbuilder;
 import org.gentoo.java.ebuilder.maven.MavenParser;
@@ -159,6 +160,8 @@ public class Main {
  * @param config application configuration
  */
 private static void generateEbuild(final Config config) {
+parseEbuildName(config);
+
 final MavenCache mavenCache = new MavenCache();
 mavenCache.loadCache(config);
 
@@ -253,6 +256,33 @@ public class Main {
 }
 }
 
+/**
+ * Parses ebuild file name into its components.
+ *
+ * @param config app configuration containing ebuild information
+ */
+private static void parseEbuildName(final Config config) {
+final Map result;
+
+try {
+result = PortageParser.parseEbuildName(
+config.getEbuild().getFileName().toString());
+
+config.setEbuildName(result.get("name"));
+config.setEbuildVersion(result.get("version"));
+config.setEbuildVersionSuffix(result.get("suffix"));
+
+config.getStdoutWriter().println("Parsed ebuild file name - name: "
++ config.getEbuildName() + " version: "
++ config.getEbuildVersion() + " suffix: "
++ config.getEbuildVersionSuffix());
+} catch (final IllegalArgumentException ex) {
+config.getStdoutWriter().println("Cannot parse ebuild file name");
+
+Runtime.getRuntime().exit(1);
+}
+}
+
 /**
  * Prints application usage information.
  */

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 d504b2c..a85fe6c 100644
--- 

[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2019-10-30 Thread Miroslav Šulc
commit: 54cf529486ad0702ba76e9269552c53a817075fa
Author: Miroslav Šulc  gentoo  org>
AuthorDate: Wed Oct 30 19:26:01 2019 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Wed Oct 30 19:26:01 2019 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=54cf5294

added fix to avoid parsing directories that are not package directories

Signed-off-by: Miroslav Šulc  gentoo.org>

 src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java | 4 
 1 file changed, 4 insertions(+)

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 12422c2..6b0ae3c 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -292,6 +292,10 @@ public class PortageParser {
 (final File pathname) -> pathname.isFile()
 && pathname.getName().endsWith(".ebuild"));
 
+if (ebuilds == null) {
+return;
+}
+
 for (final File ebuild : ebuilds) {
 parseEbuild(ebuild);
 processedEbuilds++;



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/, ...

2019-10-30 Thread Miroslav Šulc
commit: 93acbb64ecbc2d5da73c96033d047209b3f74963
Author: Miroslav Šulc  gentoo  org>
AuthorDate: Wed Oct 30 17:42:12 2019 +
Commit: Miroslav Šulc  gentoo  org>
CommitDate: Wed Oct 30 17:43:31 2019 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=93acbb64

reformatted and improved style

Signed-off-by: Miroslav Šulc  gentoo.org>

 .../gentoo/java/ebuilder/maven/MavenParser.java|  5 +++--
 .../gentoo/java/ebuilder/portage/MavenVersion.java | 22 ++
 .../java/ebuilder/portage/PortageParser.java   | 12 ++--
 3 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java 
b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java
index 4ab15e9..2e81541 100644
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java
@@ -529,8 +529,9 @@ public class MavenParser {
 scope = reader.getElementText();
 break;
 case "version":
-version = reader.getElementText().replace("-SNAPSHOT",
-"");
+version = reader.getElementText().replace(
+"-SNAPSHOT", "");
+
/* crazy version from
 * org.khronos:opengl-api:gl1.1-android-2.1_r1 */
 // TODO: this should go to a file mapping crazy 
versions

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java 
b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
index e2bf46f..657d3c4 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -18,7 +18,8 @@ public class MavenVersion implements Comparable 
{
 /**
  * Pattern for parsing maven version range.
  */
-private static final Pattern p_VERSION_RANGE = Pattern.compile("\\[.*, 
?(.*?)\\]");
+private static final Pattern PATTERN_VERSION_RANGE
+= Pattern.compile("\\[.*, ?(.*?)\\]");
 /**
  * Incremental version number.
  */
@@ -41,16 +42,21 @@ public class MavenVersion implements 
Comparable {
  *
  * @param version version string
  */
-public MavenVersion(String version) {
-   Matcher m_RANGE = p_VERSION_RANGE.matcher(version);
-if (m_RANGE.matches()) {
-version = m_RANGE.group(1);
+public MavenVersion(final String version) {
+final Matcher matcherRange = PATTERN_VERSION_RANGE.matcher(version);
+final String useVersion;
+
+if (matcherRange.matches()) {
+useVersion = matcherRange.group(1);
+} else {
+useVersion = version;
 }
-final Matcher matcher = PATTERN_VERSION.matcher(version);
+
+final Matcher matcher = PATTERN_VERSION.matcher(useVersion);
 
 if (!matcher.matches()) {
-throw new RuntimeException("Maven version " + version
-+ " is not valid.");
+throw new RuntimeException(
+"Maven version " + useVersion + " is not valid.");
 }
 
 majorVersion = Integer.parseInt(matcher.group(1), 10);

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 aa8a14b..095e001 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -29,6 +29,10 @@ public class PortageParser {
  * Cache version.
  */
 public static final String CACHE_VERSION = "1.0";
+/**
+ * Current ant utilities eclass name.
+ */
+private static final String ECLASS_ANT_TASKS = "ant-tasks";
 /**
  * Current java package eclass name.
  */
@@ -45,10 +49,6 @@ public class PortageParser {
  * Current java utilities eclass name.
  */
 private static final String ECLASS_JAVA_UTILS = "java-utils-2";
-/**
- * Current ant utilities eclass name.
- */
-private static final String ECLASS_ANT_TASKS = "ant-tasks";
 /**
  * Pattern for parsing SLOT with bash substring.
  */
@@ -130,8 +130,8 @@ public class PortageParser {
 return ECLASS_JAVA_PKG_SIMPLE;
 } else if (inheritLine.contains(ECLASS_JAVA_UTILS)) {
 return ECLASS_JAVA_UTILS;
-   } else if (inheritLine.contains(ECLASS_ANT_TASKS)) {
-   return ECLASS_ANT_TASKS;
+} else if (inheritLine.contains(ECLASS_ANT_TASKS)) {
+return ECLASS_ANT_TASKS;
 } else {
 return null;
 }



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2019-10-30 Thread Michał Górny
commit: a8b7bf3afb383ba515d32e921dd4412b5991bd8e
Author: Benda Xu  gentoo  org>
AuthorDate: Mon Jan  9 10:59:42 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Mon Jan  9 11:09:39 2017 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=a8b7bf3a

MavenVersion.java: parse version range.

  http://maven.apache.org/components/enforcer/enforcer-rules/versionRanges.html
  https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm

 .../java/org/gentoo/java/ebuilder/portage/MavenVersion.java| 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java 
b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
index 5192abc..e2bf46f 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -15,6 +15,10 @@ public class MavenVersion implements 
Comparable {
  */
 private static final Pattern PATTERN_VERSION = Pattern.compile(
 
"^v?(\\d+)(?:\\.(\\d+))?(?:(?:\\.|b|beta)(\\d+))?(?:[\\.-](.*))?$");
+/**
+ * Pattern for parsing maven version range.
+ */
+private static final Pattern p_VERSION_RANGE = Pattern.compile("\\[.*, 
?(.*?)\\]");
 /**
  * Incremental version number.
  */
@@ -37,7 +41,11 @@ public class MavenVersion implements 
Comparable {
  *
  * @param version version string
  */
-public MavenVersion(final String version) {
+public MavenVersion(String version) {
+   Matcher m_RANGE = p_VERSION_RANGE.matcher(version);
+if (m_RANGE.matches()) {
+version = m_RANGE.group(1);
+}
 final Matcher matcher = PATTERN_VERSION.matcher(version);
 
 if (!matcher.matches()) {



[gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/

2019-10-30 Thread Michał Górny
commit: b7d04de03053294019446924ba66f6f3bb45f833
Author: Benda Xu  gentoo  org>
AuthorDate: Mon Jan  9 04:10:39 2017 +
Commit: Michał Górny  gentoo  org>
CommitDate: Mon Jan  9 04:10:39 2017 +
URL:https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=b7d04de0

MavenVersion.java: maven verion tricks.

 src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java 
b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
index e603943..5192abc 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -14,7 +14,7 @@ public class MavenVersion implements Comparable 
{
  * Pattern for parsing maven version number.
  */
 private static final Pattern PATTERN_VERSION = Pattern.compile(
-"^(\\d+)(?:\\.(\\d+))?(?:[\\.b](\\d+))?(?:[\\.-](.*))?$");
+
"^v?(\\d+)(?:\\.(\\d+))?(?:(?:\\.|b|beta)(\\d+))?(?:[\\.-](.*))?$");
 /**
  * Incremental version number.
  */