diff options
author | Tor Norbye <tnorbye@google.com> | 2014-09-18 13:38:58 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-09-18 13:38:58 -0700 |
commit | b5fb31ef6a38f19404859755dbd2e345215b97bf (patch) | |
tree | e8787c45e494dfcc558faf0f75956f8785c39b94 /platform/platform-impl/src/com/intellij/openapi/application/PluginPathManager.java | |
parent | e222a9e1e66670a56e926a6b0f3e10231eeeb1fb (diff) | |
parent | e782c57d74000722f9db4c9426317410520670c6 (diff) | |
download | idea-b5fb31ef6a38f19404859755dbd2e345215b97bf.tar.gz |
Merge remote-tracking branch 'aosp/upstream-master' into merge
Conflicts:
.idea/libraries/asm_tools.xml
.idea/libraries/bouncy_castle.xml
.idea/libraries/builder_model.xml
.idea/libraries/commons_compress.xml
.idea/libraries/easymock_tools.xml
.idea/libraries/freemarker_2_3_20.xml
.idea/libraries/guava_tools.xml
.idea/libraries/kxml2.xml
.idea/libraries/lombok_ast.xml
.idea/libraries/mockito.xml
.idea/modules.xml
.idea/vcs.xml
build/scripts/layouts.gant
updater/src/com/intellij/updater/Runner.java
Change-Id: I8e1c173e00cd76c855b8a98543b0a0edfdd99d12
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/application/PluginPathManager.java')
-rw-r--r-- | platform/platform-impl/src/com/intellij/openapi/application/PluginPathManager.java | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/application/PluginPathManager.java b/platform/platform-impl/src/com/intellij/openapi/application/PluginPathManager.java index 1ab050053e28..9bad9d2d3774 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/PluginPathManager.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/PluginPathManager.java @@ -16,8 +16,10 @@ package com.intellij.openapi.application; import com.intellij.openapi.util.io.FileUtil; +import org.jetbrains.annotations.NotNull; import java.io.File; +import java.io.FileFilter; import java.util.*; /** @@ -32,26 +34,38 @@ public class PluginPathManager { private static List<File> findSubrepos() { List<File> result = new ArrayList<File>(); - File[] subdirs = new File(PathManager.getHomePath()).listFiles(); - if (subdirs == null) return result; - Arrays.sort(subdirs, new Comparator<File>() { + File[] gitRoots = getSortedGitRoots(new File(PathManager.getHomePath())); + for (File subdir : gitRoots) { + File pluginsDir = new File(subdir, "plugins"); + if (pluginsDir.exists()) { + result.add(pluginsDir); + } + else { + result.add(subdir); + } + result.addAll(Arrays.asList(getSortedGitRoots(subdir))); + } + return result; + } + + @NotNull + private static File[] getSortedGitRoots(@NotNull File dir) { + File[] gitRoots = dir.listFiles(new FileFilter() { + @Override + public boolean accept(File child) { + return child.isDirectory() && new File(child, ".git").exists(); + } + }); + if (gitRoots == null) { + return new File[0]; + } + Arrays.sort(gitRoots, new Comparator<File>() { @Override public int compare(File file, File file2) { return FileUtil.compareFiles(file, file2); } }); - for (File subdir : subdirs) { - if (new File(subdir, ".git").exists()) { - File pluginsDir = new File(subdir, "plugins"); - if (pluginsDir.exists()) { - result.add(pluginsDir); - } - else { - result.add(subdir); - } - } - } - return result; + return gitRoots; } } |