Search in sources :

Example 51 with Course

use of com.jetbrains.edu.learning.courseFormat.Course in project intellij-community by JetBrains.

the class PyStudyDirectoryProjectGenerator method getBaseSdk.

private static String getBaseSdk(@NotNull final Project project) {
    final Course course = StudyTaskManager.getInstance(project).getCourse();
    LanguageLevel baseLevel = LanguageLevel.PYTHON30;
    if (course != null) {
        final String version = course.getLanguageVersion();
        if (PyStudyLanguageManager.PYTHON_2.equals(version)) {
            baseLevel = LanguageLevel.PYTHON27;
        } else if (PyStudyLanguageManager.PYTHON_3.equals(version)) {
            baseLevel = LanguageLevel.PYTHON31;
        } else if (version != null) {
            baseLevel = LanguageLevel.fromPythonVersion(version);
        }
    }
    final PythonSdkFlavor flavor = PythonSdkFlavor.getApplicableFlavors(false).get(0);
    String baseSdk = null;
    final Collection<String> baseSdks = flavor.suggestHomePaths();
    for (String sdk : baseSdks) {
        final String versionString = flavor.getVersionString(sdk);
        final String prefix = flavor.getName() + " ";
        if (versionString != null && versionString.startsWith(prefix)) {
            final LanguageLevel level = LanguageLevel.fromPythonVersion(versionString.substring(prefix.length()));
            if (level.isAtLeast(baseLevel)) {
                baseSdk = sdk;
                break;
            }
        }
    }
    return baseSdk != null ? baseSdk : baseSdks.iterator().next();
}
Also used : LanguageLevel(com.jetbrains.python.psi.LanguageLevel) PythonSdkFlavor(com.jetbrains.python.sdk.flavors.PythonSdkFlavor) Course(com.jetbrains.edu.learning.courseFormat.Course)

Aggregations

Course (com.jetbrains.edu.learning.courseFormat.Course)51 Project (com.intellij.openapi.project.Project)26 VirtualFile (com.intellij.openapi.vfs.VirtualFile)21 TaskFile (com.jetbrains.edu.learning.courseFormat.TaskFile)12 PsiDirectory (com.intellij.psi.PsiDirectory)11 Lesson (com.jetbrains.edu.learning.courseFormat.Lesson)10 File (java.io.File)10 IdeView (com.intellij.ide.IdeView)8 Nullable (org.jetbrains.annotations.Nullable)6 Presentation (com.intellij.openapi.actionSystem.Presentation)5 PsiFile (com.intellij.psi.PsiFile)5 Task (com.jetbrains.edu.learning.courseFormat.Task)5 NotNull (org.jetbrains.annotations.NotNull)5 Editor (com.intellij.openapi.editor.Editor)4 PsiElement (com.intellij.psi.PsiElement)4 List (java.util.List)4 AbstractTreeNode (com.intellij.ide.util.treeView.AbstractTreeNode)3 ApplicationManager (com.intellij.openapi.application.ApplicationManager)3 Module (com.intellij.openapi.module.Module)3 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)3