use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project intellij-community by JetBrains.
the class PythonMockSdk method create.
public static Sdk create(final String version, @NotNull final VirtualFile... additionalRoots) {
final String mock_path = PythonTestUtil.getTestDataPath() + "/MockSdk" + version + "/";
String sdkHome = new File(mock_path, "bin/python" + version).getPath();
SdkType sdkType = PythonSdkType.getInstance();
final Sdk sdk = new ProjectJdkImpl(MOCK_SDK_NAME + " " + version, sdkType) {
@Override
public String getVersionString() {
return "Python " + version + " Mock SDK";
}
};
final SdkModificator sdkModificator = sdk.getSdkModificator();
sdkModificator.setHomePath(sdkHome);
File libPath = new File(mock_path, "Lib");
if (libPath.exists()) {
sdkModificator.addRoot(LocalFileSystem.getInstance().refreshAndFindFileByIoFile(libPath), OrderRootType.CLASSES);
}
sdkModificator.addRoot(PyUserSkeletonsUtil.getUserSkeletonsDirectory(), OrderRootType.CLASSES);
final LanguageLevel level = LanguageLevel.fromPythonVersion(version);
final VirtualFile typeShedDir = PyTypeShed.INSTANCE.getDirectory();
PyTypeShed.INSTANCE.findRootsForLanguageLevel(level).forEach(path -> {
final VirtualFile file = typeShedDir.findFileByRelativePath(path);
if (file != null) {
sdkModificator.addRoot(file, OrderRootType.CLASSES);
}
});
String mock_stubs_path = mock_path + PythonSdkType.SKELETON_DIR_NAME;
sdkModificator.addRoot(LocalFileSystem.getInstance().refreshAndFindFileByPath(mock_stubs_path), PythonSdkType.BUILTIN_ROOT_TYPE);
for (final VirtualFile root : additionalRoots) {
sdkModificator.addRoot(root, OrderRootType.CLASSES);
}
sdkModificator.commitChanges();
final FileBasedIndex index = FileBasedIndex.getInstance();
index.requestRebuild(StubUpdatingIndex.INDEX_ID);
index.requestRebuild(PyModuleNameIndex.NAME);
return sdk;
}
use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project intellij-community by JetBrains.
the class PythonSdkConfigurator method configureProject.
public void configureProject(final Project project, @NotNull final VirtualFile baseDir, Ref<Module> moduleRef) {
// it it a virtualenv?
final List<VirtualFile> children = VfsUtil.getChildren(baseDir, new VirtualFileFilter() {
@Override
public boolean accept(VirtualFile file) {
return !Project.DIRECTORY_STORE_FOLDER.equals(file.getName());
}
});
if (children.isEmpty())
return;
final PythonSdkType sdkType = PythonSdkType.getInstance();
//find virtualEnv in project directory
final List<String> candidates = new ArrayList<>();
if (project == null)
return;
final VirtualFile rootDir = project.getBaseDir();
if (rootDir != null)
candidates.addAll(VirtualEnvSdkFlavor.findInDirectory(rootDir));
if (!candidates.isEmpty()) {
String filePath = candidates.get(0);
if (StringUtil.startsWithChar(filePath, '~')) {
final String home = SystemProperties.getUserHome();
filePath = home + filePath.substring(1);
}
final Sdk virtualEnvSdk = SdkConfigurationUtil.createAndAddSDK(filePath, sdkType);
if (virtualEnvSdk != null) {
SdkConfigurationUtil.setDirectoryProjectSdk(project, virtualEnvSdk);
SdkAdditionalData additionalData = virtualEnvSdk.getSdkAdditionalData();
if (additionalData == null) {
additionalData = new PythonSdkAdditionalData(PythonSdkFlavor.getFlavor(virtualEnvSdk.getHomePath()));
((ProjectJdkImpl) virtualEnvSdk).setSdkAdditionalData(additionalData);
}
((PythonSdkAdditionalData) additionalData).associateWithProject(project);
return;
}
return;
}
final Sdk existingSdk = ProjectRootManager.getInstance(project).getProjectSdk();
// SdkConfigurationUtil does the same
if (existingSdk != null && existingSdk.getSdkType() == sdkType)
return;
final File executableFile = PythonSdkType.findExecutableFile(new File(project.getBasePath(), "bin"), "python");
if (executableFile != null) {
final File virtualEnvRoot = PythonSdkType.getVirtualEnvRoot(executableFile.getPath());
if (virtualEnvRoot != null) {
// yes, an unknown virtualenv; set it up as SDK
final Sdk sdk = SdkConfigurationUtil.createAndAddSDK(executableFile.getPath(), sdkType);
if (sdk != null) {
SdkConfigurationUtil.setDirectoryProjectSdk(project, sdk);
return;
}
}
}
// default
SdkConfigurationUtil.configureDirectoryProjectSdk(project, new PreferredSdkComparator(), sdkType);
}
use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project Perl5-IDEA by Camelcade.
the class Perl5SdkConfigurable method addSdk.
private void addSdk(@NotNull String home) {
PerlSdkType sdkType = PerlSdkType.INSTANCE;
String newSdkName = SdkConfigurationUtil.createUniqueSdkName(sdkType, home, Arrays.asList(PerlSdkTable.getInstance().getAllJdks()));
final ProjectJdkImpl newSdk = new ProjectJdkImpl(newSdkName, sdkType);
newSdk.setHomePath(home);
sdkType.setupSdkPaths(newSdk);
// should we check for version string?
myChange = true;
PerlSdkTable.getInstance().addJdk(newSdk);
}
use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project Perl5-IDEA by Camelcade.
the class PerlLightTestCase method setUpLibrary.
protected void setUpLibrary() {
Application application = ApplicationManager.getApplication();
application.invokeAndWait(() -> application.runWriteAction(() -> {
VirtualFile libdir = LocalFileSystem.getInstance().refreshAndFindFileByPath("testData/testlib");
assert libdir != null;
PerlProjectManager perlProjectManager = PerlProjectManager.getInstance(getProject());
perlProjectManager.setProjectSdk(new ProjectJdkImpl("test", PerlSdkType.INSTANCE));
perlProjectManager.addExternalLibrary(libdir);
CodeInsightTestFixtureImpl.ensureIndexesUpToDate(getProject());
}));
}
use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project go-lang-idea-plugin by go-lang-plugin-org.
the class GoCodeInsightFixtureTestCase method createMockSdk.
@NotNull
private static Sdk createMockSdk(@NotNull String version) {
String homePath = new File("testData/mockSdk-" + version + "/").getAbsolutePath();
GoSdkType sdkType = GoSdkType.getInstance();
ProjectJdkImpl sdk = new ProjectJdkImpl("Go " + version, sdkType, homePath, version);
sdkType.setupSdkPaths(sdk);
sdk.setVersionString(version);
return sdk;
}
Aggregations