package liveplugin.toolwindow.util; import com.intellij.openapi.util.Pair; import liveplugin.LivePluginAppComponent; import java.io.IOException; import java.util.List; public class ExamplePluginInstaller { private final String pluginPath; private final List<String> filePaths; private final String pluginId; public ExamplePluginInstaller(String pluginPath, List<String> filePaths) { this.pluginPath = pluginPath; this.filePaths = filePaths; this.pluginId = extractPluginIdFrom(pluginPath); } public void installPlugin(Listener listener) { for (String relativeFilePath : filePaths) { try { String text = LivePluginAppComponent.readSampleScriptFile(pluginPath, relativeFilePath); Pair<String, String> pair = splitIntoPathAndFileName(LivePluginAppComponent.pluginsRootPath() + "/" + pluginId + "/" + relativeFilePath); PluginsIO.createFile(pair.first, pair.second, text); } catch (IOException e) { listener.onException(e, pluginPath); } } } private static Pair<String, String> splitIntoPathAndFileName(String filePath) { int index = filePath.lastIndexOf("/"); return Pair.create(filePath.substring(0, index), filePath.substring(index + 1)); } public static String extractPluginIdFrom(String pluginPath) { String[] split = pluginPath.split("/"); return split[split.length - 1]; } public interface Listener { void onException(Exception e, String pluginPath); } }