[java-sig-commits] [javapackages] maven_depmap.py: correctly handle extensions with dots (tar.gz, ...)

Michal Srb msrb at fedoraproject.org
Mon Sep 16 11:33:45 UTC 2013


commit 1f33546b01c14a1b8720e403eed5db8ca16d7fe8
Author: Michal Srb <msrb at redhat.com>
Date:   Mon Sep 16 10:53:31 2013 +0200

    maven_depmap.py: correctly handle extensions with dots (tar.gz, ...)

 java-utils/maven_depmap.py |   33 +++++++++++++++++++++++----------
 1 files changed, 23 insertions(+), 10 deletions(-)
---
diff --git a/java-utils/maven_depmap.py b/java-utils/maven_depmap.py
index a57cace..cdc1266 100644
--- a/java-utils/maven_depmap.py
+++ b/java-utils/maven_depmap.py
@@ -74,6 +74,10 @@ class MissingJarFile(Exception):
     def __init__(self):
         self.args=("JAR seems to be missing in standard directories. Make sure you have installed it",)
 
+class UnknownFileExtension(Exception):
+    def __init__(self, jar_path):
+        self.args=("Unknown file extension: %s" % (jar_path),)
+
 def _get_javadir_part(jar_path, prefix):
     # This is not nice, because macros can change but handling these
     # in RPM macros is ugly as hell.
@@ -90,7 +94,7 @@ def _get_javadir_part(jar_path, prefix):
         raise MissingJarFile()
     return jarpart
 
-def _get_jpp_from_filename(pom_path, prefix, jar_path = None):
+def _get_jpp_from_filename(pom_path, prefix, jar_path = None, extension = "jar"):
     """Get resolved (groupId,artifactId) tuple from POM and JAR path.
 
     POM name and JAR name have to be compatible.
@@ -108,7 +112,7 @@ def _get_jpp_from_filename(pom_path, prefix, jar_path = None):
             if '/' not in jarpart:
                 raise IncompatibleFilenames(pom_path, jar_path)
             jpp_gid = "JPP/%s" % dirname(jarpart)
-            jpp_aid = splitext(basename(jarpart))[0]
+            jpp_aid = basename(jarpart[:-(len(extension)+1)])
             # we assert that jar and pom parts match
             if not pomname == "JPP.%s-%s.pom" % (jpp_gid[4:], jpp_aid):
                 raise IncompatibleFilenames(pom_path, jar_path)
@@ -116,7 +120,7 @@ def _get_jpp_from_filename(pom_path, prefix, jar_path = None):
             if '/' in jarpart:
                 raise IncompatibleFilenames(pom_path, jar_path)
             jpp_gid = "JPP"
-            jpp_aid = splitext(basename(jarpart))[0]
+            jpp_aid = basename(jarpart[:-(len(extension)+1)])
             # we assert that jar and pom parts match
             if not pomname == "JPP-%s.pom" % jpp_aid:
                 raise IncompatibleFilenames(pom_path, jar_path)
@@ -131,6 +135,13 @@ def _get_jpp_from_filename(pom_path, prefix, jar_path = None):
             jpp_aid = pomname[4:-4]
     return(jpp_gid, jpp_aid)
 
+def _get_file_extension(jar_path, artifactId):
+    """Get file extension from JAR path"""
+    extension = re.search('.*/%s.(.*)$' % (artifactId), jar_path)
+    if extension:
+        return extension.group(1)
+    else:
+        raise UnknownFileExtension(jar_path)
 
 def get_local_artifact(upstream_artifact, prefix, jar_path=None):
     if not jar_path:
@@ -145,13 +156,14 @@ def get_local_artifact(upstream_artifact, prefix, jar_path=None):
     if '/' in jarpart:
         local_gid = "JPP/{gid}".format(gid=dirname(jarpart))
 
-    fname, ext = splitext(basename(jarpart))
+    ext = _get_file_extension(jar_path, upstream_artifact.artifactId)
+    fname = basename(jarpart)[:-(len(ext)+1)]
 
     if upstream_artifact.extension:
-        if ext[1:] != upstream_artifact.extension:
+        if ext != upstream_artifact.extension:
             raise IncompatibleFilenames(str(upstream_artifact), jar_path)
     else:
-        if ext[1:] != "jar":
+        if ext != "jar":
             raise IncompatibleFilenames(str(upstream_artifact), jar_path)
 
     local_aid = fname
@@ -175,11 +187,12 @@ def parse_pom(pom_file, prefix, jar_file = None):
         if not pom.packaging or pom.packaging != "pom":
             raise PackagingTypeMissingFile(pom_path)
     else:
-        extension = re.search('.*/%s.(.*)$' % (pom.artifactId), jar_path).group(1)
-        if extension == "jar":
-            extension = ''
+        extension = _get_file_extension(jar_path, pom.artifactId)
+
+    jpp_gid, jpp_aid = _get_jpp_from_filename(pom_file, prefix, jar_file, extension)
 
-    jpp_gid, jpp_aid = _get_jpp_from_filename(pom_file, prefix, jar_file)
+    if extension == "jar":
+        extension = ''
 
     upstream_artifact = Artifact(pom.groupId, pom.artifactId, version=pom.version)
     local_artifact = Artifact(jpp_gid, jpp_aid, extension)


More information about the java-sig-commits mailing list