| 36 | import java.util.jar.Manifest; |
| 37 | |
| 38 | @Singleton |
| 39 | public class InitPlugins implements InitStep { |
| 40 | public static final String PLUGIN_DIR = "WEB-INF/plugins/"; |
| 41 | public static final String JAR = ".jar"; |
| 42 | |
| 43 | public static List<PluginData> listPlugins( |
| 44 | SitePaths site, PluginsDistribution pluginsDistribution) throws IOException { |
| 45 | return listPlugins(site, false, pluginsDistribution); |
| 46 | } |
| 47 | |
| 48 | public static List<PluginData> listPluginsAndRemoveTempFiles( |
| 49 | SitePaths site, PluginsDistribution pluginsDistribution) throws IOException { |
| 50 | return listPlugins(site, true, pluginsDistribution); |
| 51 | } |
| 52 | |
| 53 | private static List<PluginData> listPlugins( |
| 54 | final SitePaths site, |
| 55 | final boolean deleteTempPluginFile, |
| 56 | PluginsDistribution pluginsDistribution) |
| 57 | throws IOException { |
| 58 | final List<PluginData> result = new ArrayList<>(); |
| 59 | pluginsDistribution.foreach( |
| 60 | (pluginName, in) -> { |
| 61 | Path tmpPlugin = JarPluginProvider.storeInTemp(pluginName, in, site); |
| 62 | String pluginVersion = getVersion(tmpPlugin); |
| 63 | if (deleteTempPluginFile) { |
| 64 | Files.delete(tmpPlugin); |
| 65 | } |
| 66 | result.add(new PluginData(pluginName, pluginVersion, tmpPlugin)); |
| 67 | }); |
| 68 | result.sort(comparing(p -> p.name)); |
| 69 | return result; |
| 70 | } |
| 71 | |
| 72 | private final ConsoleUI ui; |
| 73 | private final SitePaths site; |
| 74 | private final InitFlags initFlags; |
| 75 | private final InitPluginStepsLoader pluginLoader; |
| 76 | private final PluginsDistribution pluginsDistribution; |
| 77 | |
| 78 | private Injector postRunInjector; |
| 79 | |
| 80 | @Inject |
| 81 | InitPlugins( |
| 82 | final ConsoleUI ui, |
| 83 | final SitePaths site, |
| 84 | InitFlags initFlags, |
| 85 | InitPluginStepsLoader pluginLoader, |
| 86 | PluginsDistribution pluginsDistribution) { |
| 87 | this.ui = ui; |
| 88 | this.site = site; |
| 89 | this.initFlags = initFlags; |
| 90 | this.pluginLoader = pluginLoader; |
| 91 | this.pluginsDistribution = pluginsDistribution; |
| 92 | } |
| 93 | |
| 94 | @Override |
| 95 | public void run() throws Exception { |
nothing calls this directly
no outgoing calls
no test coverage detected