summaryrefslogtreecommitdiff
path: root/python/edu/learn-python/src/com/jetbrains/python/edu/StudyInitialConfigurator.java
blob: 34776f3fabd28a15dbec5ffe269dff5841cd60c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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");
  }

}