mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
added django facet detection in case of buildout
This commit is contained in:
@@ -38,7 +38,7 @@ import java.util.regex.Pattern;
|
||||
* User: dcheryasov
|
||||
* Date: Jul 25, 2010 3:23:50 PM
|
||||
*/
|
||||
public class BuildoutFacet extends Facet<BuildoutFacetConfiguration> implements PythonPathContributingFacet {
|
||||
public class BuildoutFacet extends Facet<BuildoutFacetConfiguration> implements PythonPathContributingFacet {
|
||||
|
||||
private static final Logger LOG = Logger.getInstance("#com.jetbrains.python.buildout.BuildoutFacet");
|
||||
@NonNls private static final String BUILDOUT_CFG = "buildout.cfg";
|
||||
@@ -60,10 +60,14 @@ public class BuildoutFacet extends Facet<BuildoutFacetConfiguration> implements
|
||||
VirtualFile bin = baseDir.findChild("bin");
|
||||
if (bin != null && bin.isDirectory()) {
|
||||
final String exe;
|
||||
if (SystemInfo.isWindows || SystemInfo.isOS2) exe = "buildout.exe";
|
||||
else exe = "buildout";
|
||||
if (SystemInfo.isWindows || SystemInfo.isOS2) {
|
||||
exe = "buildout.exe";
|
||||
}
|
||||
else {
|
||||
exe = "buildout";
|
||||
}
|
||||
VirtualFile runner = bin.findChild(exe);
|
||||
if (runner != null && ! runner.isDirectory()) {
|
||||
if (runner != null && !runner.isDirectory()) {
|
||||
return runner;
|
||||
}
|
||||
}
|
||||
@@ -97,6 +101,7 @@ public class BuildoutFacet extends Facet<BuildoutFacetConfiguration> implements
|
||||
|
||||
/**
|
||||
* Extracts paths from given script, assuming sys.path[0:0] assignment.
|
||||
*
|
||||
* @param script
|
||||
* @return extracted paths, or null if extraction fails.
|
||||
*/
|
||||
@@ -120,7 +125,9 @@ public class BuildoutFacet extends Facet<BuildoutFacetConfiguration> implements
|
||||
ret.add(value);
|
||||
pos = scanner.end();
|
||||
}
|
||||
else break; // we've matched the ']', it's group(4)
|
||||
else {
|
||||
break;
|
||||
} // we've matched the ']', it's group(4)
|
||||
}
|
||||
if (did_nothing) return null;
|
||||
}
|
||||
@@ -170,19 +177,26 @@ public class BuildoutFacet extends Facet<BuildoutFacetConfiguration> implements
|
||||
|
||||
|
||||
@Nullable
|
||||
public BuildoutCfgFile getConfigFile() {
|
||||
public File getConfigFile() {
|
||||
final String scriptName = getConfiguration().getScriptName();
|
||||
if (!StringUtil.isEmpty(scriptName)) {
|
||||
File cfg = new File(new File(scriptName).getParentFile().getParentFile(), BUILDOUT_CFG);
|
||||
if (cfg.exists()) {
|
||||
final VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(cfg);
|
||||
if (vFile != null) {
|
||||
final PsiFile psiFile = PsiManager.getInstance(getModule().getProject()).findFile(vFile);
|
||||
if (psiFile instanceof BuildoutCfgFile) {
|
||||
return (BuildoutCfgFile) psiFile;
|
||||
}
|
||||
return new File(new File(scriptName).getParentFile().getParentFile(), BUILDOUT_CFG);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public BuildoutCfgFile getConfigPsiFile() {
|
||||
File cfg = getConfigFile();
|
||||
if (cfg.exists()) {
|
||||
final VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(cfg);
|
||||
if (vFile != null) {
|
||||
final PsiFile psiFile = PsiManager.getInstance(getModule().getProject()).findFile(vFile);
|
||||
if (psiFile instanceof BuildoutCfgFile) {
|
||||
return (BuildoutCfgFile)psiFile;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.jetbrains.python.buildout;
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiFileFactory;
|
||||
import com.jetbrains.python.buildout.config.BuildoutCfgLanguage;
|
||||
import com.jetbrains.python.buildout.config.psi.impl.BuildoutCfgFile;
|
||||
import com.jetbrains.python.buildout.config.psi.impl.BuildoutCfgSection;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author traff
|
||||
*/
|
||||
public class BuildoutUtil {
|
||||
private static final String RECIPE = "recipe";
|
||||
private static final String DJANGO_RECIPE = "djangorecipe";
|
||||
|
||||
@Nullable
|
||||
public static BuildoutCfgSection getDjangoSection(@NotNull BuildoutCfgFile configFile) {
|
||||
List<String> parts = configFile.getParts();
|
||||
for (String part : parts) {
|
||||
final BuildoutCfgSection section = configFile.findSectionByName(part);
|
||||
if (section != null && DJANGO_RECIPE.equals(section.getOptionValue(RECIPE))) {
|
||||
return section;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static BuildoutCfgFile readBuildOutCfgFile(BuildoutFacet buildoutFacet) {
|
||||
File cfg = buildoutFacet.getConfigFile();
|
||||
if (cfg != null && cfg.exists()) {
|
||||
try {
|
||||
char[] scriptText = FileUtil.loadFileText(cfg);
|
||||
final PsiFile configFile = PsiFileFactory
|
||||
.getInstance(buildoutFacet.getModule().getProject()).createFileFromText("buildout.cfg",
|
||||
BuildoutCfgLanguage.INSTANCE, new String(scriptText));
|
||||
if (configFile != null && configFile instanceof BuildoutCfgFile) {
|
||||
return (BuildoutCfgFile)configFile;
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,10 +36,7 @@ public class BuildoutCfgASTFactory implements BuildoutCfgElementTypes, BuildoutC
|
||||
if (type == SECTION_NAME) {
|
||||
return new BuildoutCfgSectionHeaderName(node);
|
||||
}
|
||||
//if (type == KEY_CHARACTERS || type == VALUE_CHARACTERS) {
|
||||
// return new BuildoutCfgCharacters(node);
|
||||
//}
|
||||
|
||||
|
||||
return new BuildoutCfgPsiElement(node);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
package com.jetbrains.python.buildout.config.psi.impl;
|
||||
|
||||
import com.intellij.lang.ASTNode;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author traff
|
||||
*/
|
||||
public class BuildoutCfgCharacters extends BuildoutCfgPsiElement {
|
||||
public BuildoutCfgCharacters(@NotNull final ASTNode node) {
|
||||
super(node);
|
||||
}
|
||||
|
||||
public String getCharacters() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "BuildoutCfgCharacters:" + getNode().getElementType().toString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user