package com.github.masahirosuzuka.PhoneGapIntelliJPlugin.runner; import com.intellij.execution.configurations.PathEnvironmentVariableUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.search.FilenameIndex; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.Collection; public class RippleInfo { private static volatile String ripplePath = null; @Nullable public static String getRipplePath() { String path = ripplePath; if (path != null) { return ripplePath; } String name = "ripple"; File file = PathEnvironmentVariableUtil.findInPath(SystemInfo.isWindows ? name + ".cmd" : name); if (file != null) { path = file.getAbsolutePath(); ripplePath = path; } return path; } public static String getIndexPath(Project project, final String platform) { Collection<VirtualFile> name = FilenameIndex.getVirtualFilesByName(project, "index.html", GlobalSearchScope.projectScope(project)); VirtualFile item = ContainerUtil.find(name, file -> file.getPath().contains("platforms") && file.getPath().contains(platform)); return item != null ? item.getParent().getPath() : null; } }