PluginManager/PluginRepositoryDialog.py

changeset 5975
3bc24855b254
parent 5868
c1a98c164cd3
child 6023
c6dabc972560
diff -r dfb291b5b620 -r 3bc24855b254 PluginManager/PluginRepositoryDialog.py
--- a/PluginManager/PluginRepositoryDialog.py	Fri Nov 17 18:47:07 2017 +0100
+++ b/PluginManager/PluginRepositoryDialog.py	Fri Nov 17 18:51:40 2017 +0100
@@ -14,6 +14,7 @@
 import os
 import zipfile
 import glob
+import re
 
 from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QFile, QIODevice, QUrl, \
     QProcess, QPoint, QCoreApplication
@@ -877,22 +878,31 @@
         if not os.path.isfile(os.path.join(downloadPath, pluginFile)):
             continue
         
-        pluginName = pluginFile.rsplit("-", 1)[0]
+        pluginName, pluginVersion = \
+            pluginFile.replace(".zip", "").rsplit("-", 1)
+        pluginVersionList = re.split("[._-]", pluginVersion)
+        for index in range(len(pluginVersionList)):
+            try:
+                pluginVersionList[index] = int(pluginVersionList[index])
+            except ValueError:
+                # use default of 0
+                pluginVersionList[index] = 0
+        
         if pluginName not in downloads:
             downloads[pluginName] = []
-        downloads[pluginName].append(pluginFile)
+        downloads[pluginName].append((pluginFile, tuple(pluginVersionList)))
     
     # step 2: delete old entries
     hiddenPlugins = Preferences.getPluginManager("HiddenPlugins")
     for pluginName in downloads:
-        downloads[pluginName].sort()
+        downloads[pluginName].sort(key=lambda x: x[1])
     
         if pluginName in hiddenPlugins and \
                 not Preferences.getPluginManager("KeepHidden"):
-            removeFiles = downloads[pluginName]
+            removeFiles = downloads[pluginName][0]
         else:
-            removeFiles = downloads[pluginName][
-                :-Preferences.getPluginManager("KeepGenerations")]
+            removeFiles = [f[0] for f in downloads[pluginName][
+                :-Preferences.getPluginManager("KeepGenerations")]]
         for removeFile in removeFiles:
             try:
                 os.remove(os.path.join(downloadPath, removeFile))

eric ide

mercurial