Extended the plug-in archive creation process and improved the plug-in archive dialog to cope with the documentation sets plug-in peculiarities.

Sun, 18 Dec 2016 13:42:41 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 18 Dec 2016 13:42:41 +0100
changeset 5382
5b772524f302
parent 5381
46fc897c5ac0
child 5383
4bf49e0840f3

Extended the plug-in archive creation process and improved the plug-in archive dialog to cope with the documentation sets plug-in peculiarities.

Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Project.Project.html file | annotate | diff | comparison | revisions
PluginManager/PluginRepositoryDialog.py file | annotate | diff | comparison | revisions
Project/Project.py file | annotate | diff | comparison | revisions
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Sun Dec 18 12:58:22 2016 +0100
+++ b/Documentation/Help/source.qhp	Sun Dec 18 13:42:41 2016 +0100
@@ -10825,6 +10825,7 @@
       <keyword name="Project.__pluginCreatePkgList" id="Project.__pluginCreatePkgList" ref="eric6.Project.Project.html#Project.__pluginCreatePkgList" />
       <keyword name="Project.__pluginCreateSnapshotArchives" id="Project.__pluginCreateSnapshotArchives" ref="eric6.Project.Project.html#Project.__pluginCreateSnapshotArchives" />
       <keyword name="Project.__pluginExtractVersion" id="Project.__pluginExtractVersion" ref="eric6.Project.Project.html#Project.__pluginExtractVersion" />
+      <keyword name="Project.__pluginVersionToTuple" id="Project.__pluginVersionToTuple" ref="eric6.Project.Project.html#Project.__pluginVersionToTuple" />
       <keyword name="Project.__readDebugProperties" id="Project.__readDebugProperties" ref="eric6.Project.Project.html#Project.__readDebugProperties" />
       <keyword name="Project.__readProject" id="Project.__readProject" ref="eric6.Project.Project.html#Project.__readProject" />
       <keyword name="Project.__readSession" id="Project.__readSession" ref="eric6.Project.Project.html#Project.__readSession" />
--- a/Documentation/Source/eric6.Project.Project.html	Sun Dec 18 12:58:22 2016 +0100
+++ b/Documentation/Source/eric6.Project.Project.html	Sun Dec 18 13:42:41 2016 +0100
@@ -248,6 +248,9 @@
 <td><a href="#Project.__pluginExtractVersion">__pluginExtractVersion</a></td>
 <td>Private method to extract the version number entry.</td>
 </tr><tr>
+<td><a href="#Project.__pluginVersionToTuple">__pluginVersionToTuple</a></td>
+<td>Private method to convert a plug-in version string into a version tuple.</td>
+</tr><tr>
 <td><a href="#Project.__readDebugProperties">__readDebugProperties</a></td>
 <td>Private method to read in the project debugger properties file (.e4d).</td>
 </tr><tr>
@@ -957,6 +960,27 @@
 <dd>
 version string (string)
 </dd>
+</dl><a NAME="Project.__pluginVersionToTuple" ID="Project.__pluginVersionToTuple"></a>
+<h4>Project.__pluginVersionToTuple</h4>
+<b>__pluginVersionToTuple</b>(<i>versionStr</i>)
+<p>
+        Private method to convert a plug-in version string into a version
+        tuple.
+</p><dl>
+<dt><i>versionStr</i> (str)</dt>
+<dd>
+version string to be converted
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+version info as a tuple
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of int and str
+</dd>
 </dl><a NAME="Project.__readDebugProperties" ID="Project.__readDebugProperties"></a>
 <h4>Project.__readDebugProperties</h4>
 <b>__readDebugProperties</b>(<i>quiet=False</i>)
--- a/PluginManager/PluginRepositoryDialog.py	Sun Dec 18 12:58:22 2016 +0100
+++ b/PluginManager/PluginRepositoryDialog.py	Sun Dec 18 13:42:41 2016 +0100
@@ -643,7 +643,13 @@
                 pluginManager = e5App().getObject("PluginManager")
                 pluginName = filename.rsplit('-', 1)[0]
                 pluginDetails = pluginManager.getPluginDetails(pluginName)
-                if pluginDetails is None or pluginDetails["version"] < version:
+                if pluginDetails is None:
+                    return PluginRepositoryWidget.PluginStatusLocalUpdate
+                if version.count(".") >= 3:
+                    # cope for extended version numbers by ignoring
+                    # the extension
+                    version = ".".join(version.split(".",3)[:3])
+                if pluginDetails["version"] < version:
                     return PluginRepositoryWidget.PluginStatusLocalUpdate
             
             return PluginRepositoryWidget.PluginStatusUpToDate
--- a/Project/Project.py	Sun Dec 18 12:58:22 2016 +0100
+++ b/Project/Project.py	Sun Dec 18 13:42:41 2016 +0100
@@ -4793,6 +4793,32 @@
     ## Below are the plugin development related methods
     #########################################################################
     
+    def __pluginVersionToTuple(self, versionStr):
+        """
+        Private method to convert a plug-in version string into a version
+        tuple.
+        
+        @param versionStr version string to be converted
+        @type str
+        @return version info as a tuple
+        @rtype tuple of int and str
+        """
+        vParts = []
+        if "-" in versionStr:
+            versionStr, additional = versionStr.split("-", 1)
+        else:
+            additional = ""
+        for part in versionStr.split("."):
+            try:
+                vParts.append(int(part))
+            except ValueError:
+                vParts.append(part)
+        
+        if additional:
+            vParts.append(additional)
+        
+        return tuple(vParts)
+    
     def __pluginCreatePkgList(self):
         """
         Private slot to create a PKGLIST file needed for archive file creation.
@@ -4919,14 +4945,19 @@
             
             lines = names.splitlines()
             archiveName = ""
+            archiveVersion=""
             names = []
             for line in lines:
                 if line.startswith(";"):
+                    line = line[1:].strip()
                     # it's a comment possibly containing a directive
                     # supported directives are:
                     # - archive_name= defines the name of the archive
-                    if line[1:].strip().startswith("archive_name="):
-                        archiveName = line[1:].split("=")[1]
+                    # - archive_version= defines the version of the archive
+                    if line.startswith("archive_name="):
+                        archiveName = line.split("=")[1]
+                    elif line.startswith("archive_version="):
+                        archiveVersion = line.split("=")[1]
                 else:
                     names.append(line)
             names = sorted(names)
@@ -4968,6 +4999,11 @@
                                 version = self.__pluginExtractVersion(
                                     os.path.join(self.ppath,
                                                  self.pdata["MAINSCRIPT"]))
+                                if archiveVersion and (
+                                    self.__pluginVersionToTuple(version) <
+                                    self.__pluginVersionToTuple(archiveVersion)
+                                ):
+                                    version = archiveVersion
                     except OSError as why:
                         E5MessageBox.critical(
                             self.ui,

eric ide

mercurial