mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-02 04:35:22 +07:00
Merge remote branch 'origin/master'
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
<frameworkSupport implementation="com.jetbrains.python.facet.PythonFrameworkSupportProvider"/>
|
||||
<frameworkSupport implementation="com.jetbrains.django.facet.DjangoFacetSupportProvider"/>
|
||||
<frameworkSupport implementation="com.jetbrains.appengine.facet.AppEngineFacetSupportProvider"/>
|
||||
<projectStructureDetector implementation="com.jetbrains.python.module.PyProjectStructureDetector"/>
|
||||
<moduleConfigurationEditorProvider implementation="com.jetbrains.python.module.PythonModuleConfigurationEditorProvider"/>
|
||||
<applicationService serviceInterface="com.jetbrains.python.run.PyCommonOptionsFormFactory"
|
||||
serviceImplementation="com.jetbrains.python.run.PyPluginCommonOptionsFormFactory"/>
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.jetbrains.python.module;
|
||||
|
||||
import com.intellij.ide.util.importProject.ModuleDescriptor;
|
||||
import com.intellij.ide.util.importProject.ProjectDescriptor;
|
||||
import com.intellij.ide.util.projectWizard.importSources.DetectedProjectRoot;
|
||||
import com.intellij.ide.util.projectWizard.importSources.ProjectFromSourcesBuilder;
|
||||
import com.intellij.ide.util.projectWizard.importSources.ProjectStructureDetector;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
public class PyProjectStructureDetector extends ProjectStructureDetector {
|
||||
@NotNull
|
||||
@Override
|
||||
public DirectoryProcessingResult detectRoots(@NotNull File dir,
|
||||
@NotNull File[] children,
|
||||
@NotNull File base,
|
||||
@NotNull List<DetectedProjectRoot> result) {
|
||||
for (File child : children) {
|
||||
if (FileUtil.getExtension(child.getName()).equals("py")) {
|
||||
result.add(new DetectedProjectRoot(dir) {
|
||||
@NotNull
|
||||
@Override
|
||||
public String getRootTypeName() {
|
||||
return "Python";
|
||||
}
|
||||
});
|
||||
return DirectoryProcessingResult.SKIP_CHILDREN;
|
||||
}
|
||||
}
|
||||
return DirectoryProcessingResult.PROCESS_CHILDREN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupProjectStructure(@NotNull Collection<DetectedProjectRoot> roots,
|
||||
@NotNull ProjectDescriptor projectDescriptor,
|
||||
@NotNull ProjectFromSourcesBuilder builder) {
|
||||
if (!roots.isEmpty() && !hasRootsFromOtherDetectors(builder)) {
|
||||
List<ModuleDescriptor> modules = projectDescriptor.getModules();
|
||||
if (modules.isEmpty()) {
|
||||
modules = new ArrayList<ModuleDescriptor>();
|
||||
for (DetectedProjectRoot root : roots) {
|
||||
modules.add(new ModuleDescriptor(root.getDirectory(), PythonModuleType.getInstance(), root));
|
||||
}
|
||||
projectDescriptor.setModules(modules);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean hasRootsFromOtherDetectors(ProjectFromSourcesBuilder builder) {
|
||||
for (ProjectStructureDetector projectStructureDetector : Extensions.getExtensions(EP_NAME)) {
|
||||
if (!(projectStructureDetector instanceof PyProjectStructureDetector)) {
|
||||
final Collection<DetectedProjectRoot> roots = builder.getProjectRoots(projectStructureDetector);
|
||||
if (!roots.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user