mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
bundle introduction course to PyCharm Edu
This commit is contained in:
@@ -132,6 +132,8 @@ target('default': "Build artifacts") {
|
||||
exclude(name: "intentionDescriptions")
|
||||
exclude(name: "tips/**/*")
|
||||
exclude(name: "tips")
|
||||
exclude(name: "courses")
|
||||
exclude(name: "courses/*")
|
||||
}
|
||||
|
||||
zipSources(home, paths.artifacts)
|
||||
@@ -205,7 +207,11 @@ public layoutEducational(String classesPath, Set usedJars) {
|
||||
|
||||
private layoutPlugins(layouts) {
|
||||
dir("plugins") {
|
||||
layouts.layoutPlugin("learn-python")
|
||||
layouts.layoutPlugin("learn-python") {
|
||||
dir("courses") {
|
||||
fileset(dir: "$pythonEduHome/learn-python/resources/courses")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
layouts.layoutCommunityPlugins(ch)
|
||||
|
||||
@@ -31,6 +31,13 @@
|
||||
</component>
|
||||
</project-components>
|
||||
|
||||
<application-components>
|
||||
<component>
|
||||
<implementation-class>com.jetbrains.python.edu.StudyInitialConfigurator</implementation-class>
|
||||
<headless-implementation-class/>
|
||||
</component>
|
||||
</application-components>
|
||||
|
||||
<actions>
|
||||
<action id="CheckAction" class="com.jetbrains.python.edu.actions.StudyCheckAction" text="check"
|
||||
description="Runs tests for current tasks" icon="/icons/icon.jpg">
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,67 @@
|
||||
package com.jetbrains.python.edu;
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightSettings;
|
||||
import com.intellij.ide.RecentProjectsManagerBase;
|
||||
import com.intellij.ide.ui.UISettings;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.application.PathManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.project.ex.ProjectManagerEx;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.platform.templates.github.ZipUtil;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
@SuppressWarnings({"UtilityClassWithoutPrivateConstructor", "UtilityClassWithPublicConstructor"})
|
||||
public class StudyInitialConfigurator {
|
||||
private static final Logger LOG = Logger.getInstance(StudyInitialConfigurator.class.getName()
|
||||
);
|
||||
@NonNls private static final String CONFIGURED = "StudyPyCharm.InitialConfiguration";
|
||||
|
||||
|
||||
/**
|
||||
* @noinspection UnusedParameters
|
||||
*/
|
||||
public StudyInitialConfigurator(MessageBus bus,
|
||||
UISettings uiSettings,
|
||||
CodeInsightSettings codeInsightSettings,
|
||||
final PropertiesComponent propertiesComponent,
|
||||
FileTypeManager fileTypeManager,
|
||||
final ProjectManagerEx projectManager,
|
||||
RecentProjectsManagerBase recentProjectsManager) {
|
||||
if (!propertiesComponent.getBoolean(CONFIGURED, false)) {
|
||||
final File file = new File(getCoursesRoot(), "introduction_course.zip");
|
||||
final File newCourses = new File(PathManager.getConfigPath(), "courses");
|
||||
try {
|
||||
FileUtil.createDirectory(newCourses);
|
||||
String fileName = file.getName();
|
||||
String unzippedName = fileName.substring(0, fileName.indexOf("."));
|
||||
File courseDir = new File(newCourses, unzippedName);
|
||||
ZipUtil.unzip(null, courseDir, file, null, null, true);
|
||||
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.warn("Couldn't copy bundled courses " + e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static File getCoursesRoot() {
|
||||
@NonNls String jarPath = PathUtil.getJarPathForClass(StudyInitialConfigurator.class);
|
||||
if (jarPath.endsWith(".jar")) {
|
||||
final File jarFile = new File(jarPath);
|
||||
|
||||
|
||||
File pluginBaseDir = jarFile.getParentFile();
|
||||
return new File(pluginBaseDir, "courses");
|
||||
}
|
||||
|
||||
return new File(jarPath , "courses");
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user