Sun, 18 Dec 2016 13:42:41 +0100
Extended the plug-in archive creation process and improved the plug-in archive dialog to cope with the documentation sets plug-in peculiarities.
--- 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,