Bläddra i källkod

Auto-extract bundled plugins if newer

Fixes issue 3558

Change-Id: Ibe8ee29b8e61173971da13c0b6f71681e54b0283
Reviewed-on: http://gerrit.dmdirc.com/766
Reviewed-by: Gregory Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Local Commits <dmdirc@googlemail.com>
tags/0.6.3b1
Chris Smith 14 år sedan
förälder
incheckning
a00f48954c
1 ändrade filer med 26 tillägg och 0 borttagningar
  1. 26
    0
      src/com/dmdirc/Main.java

+ 26
- 0
src/com/dmdirc/Main.java Visa fil

32
 import com.dmdirc.logger.DMDircExceptionHandler;
32
 import com.dmdirc.logger.DMDircExceptionHandler;
33
 import com.dmdirc.logger.ErrorLevel;
33
 import com.dmdirc.logger.ErrorLevel;
34
 import com.dmdirc.logger.Logger;
34
 import com.dmdirc.logger.Logger;
35
+import com.dmdirc.plugins.PluginInfo;
35
 import com.dmdirc.plugins.PluginManager;
36
 import com.dmdirc.plugins.PluginManager;
36
 import com.dmdirc.plugins.Service;
37
 import com.dmdirc.plugins.Service;
37
 import com.dmdirc.ui.themes.ThemeManager;
38
 import com.dmdirc.ui.themes.ThemeManager;
38
 import com.dmdirc.ui.interfaces.UIController;
39
 import com.dmdirc.ui.interfaces.UIController;
39
 import com.dmdirc.ui.WarningDialog;
40
 import com.dmdirc.ui.WarningDialog;
40
 import com.dmdirc.updater.UpdateChecker;
41
 import com.dmdirc.updater.UpdateChecker;
42
+import com.dmdirc.updater.Version;
41
 import com.dmdirc.util.resourcemanager.ResourceManager;
43
 import com.dmdirc.util.resourcemanager.ResourceManager;
42
 
44
 
43
 import java.awt.GraphicsEnvironment;
45
 import java.awt.GraphicsEnvironment;
113
         }
115
         }
114
 
116
 
115
         final PluginManager pm = PluginManager.getPluginManager();
117
         final PluginManager pm = PluginManager.getPluginManager();
118
+        checkBundledPlugins(pm, IdentityManager.getGlobalConfig());
116
         
119
         
117
         ThemeManager.loadThemes();
120
         ThemeManager.loadThemes();
118
 
121
 
258
         }
261
         }
259
     }
262
     }
260
 
263
 
264
+    /**
265
+     * Checks whether the plugins bundled with this release of DMDirc are newer
266
+     * than the plugins known by the specified {@link PluginManager}. If the
267
+     * bundled plugins are newer, they are automatically extracted.
268
+     *
269
+     * @param pm The plugin manager to use to check plugins
270
+     * @param config The configuration source for bundled versions
271
+     */
272
+    private static void checkBundledPlugins(final PluginManager pm, final ConfigManager config) {
273
+        for (PluginInfo plugin : pm.getPluginInfos()) {
274
+            if (config.hasOptionString("bundledplugins_versions", plugin.getName())) {
275
+                final Version bundled = new Version(config.getOption("bundledplugins_versions",
276
+                        plugin.getName()));
277
+                final Version installed = plugin.getVersion();
278
+
279
+                if (installed.compareTo(bundled) < 0) {
280
+                    extractCorePlugins(plugin.getName());
281
+                    PluginManager.getPluginManager().reloadPlugin(plugin.getFilename());
282
+                }
283
+            }
284
+        }
285
+    }
286
+
261
     /**
287
     /**
262
      * Attempts to find and activate a service which provides a UI that we
288
      * Attempts to find and activate a service which provides a UI that we
263
      * can use.
289
      * can use.

Laddar…
Avbryt
Spara