Merge branch 'master' into traff/zip_helpers
[idea/community.git] / python / src / com / jetbrains / python / PythonHelpersLocator.java
1 /*
2  * Copyright 2000-2014 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.jetbrains.python;
17
18 import com.intellij.openapi.application.PathManager;
19 import com.intellij.openapi.diagnostic.Logger;
20 import com.intellij.util.PathUtil;
21 import org.jetbrains.annotations.NonNls;
22 import org.jetbrains.annotations.NotNull;
23
24 import java.io.File;
25
26 public class PythonHelpersLocator {
27   private static final Logger LOG = Logger.getInstance("#com.jetbrains.python.PythonHelpersLocator");
28   private static final String COMMUNITY_SUFFIX = "-community";
29
30   private PythonHelpersLocator() {}
31
32   /**
33    * @return the base directory under which various scripts, etc are stored.
34    */
35   @NotNull
36   public static File getHelpersRoot() {
37     @NonNls String jarPath = PathUtil.getJarPathForClass(PythonHelpersLocator.class);
38     if (jarPath.endsWith(".jar")) {
39       final File jarFile = new File(jarPath);
40
41       LOG.assertTrue(jarFile.exists(), "jar file cannot be null");
42       File pluginBaseDir = jarFile.getParentFile().getParentFile();
43       return new File(pluginBaseDir, "helpers");
44     }
45
46     if (jarPath.endsWith(COMMUNITY_SUFFIX)) {
47       jarPath = jarPath.substring(0, jarPath.length() - COMMUNITY_SUFFIX.length());
48     }
49
50     return new File(jarPath + "-helpers");
51   }
52
53   /**
54    * Find a resource by name under helper root.
55    *
56    * @param resourceName a path relative to helper root
57    * @return absolute path of the resource
58    */
59   public static String getHelperPath(@NotNull String resourceName) {
60     return getHelperFile(resourceName).getAbsolutePath();
61   }
62
63   /**
64    * Finds a resource file by name under helper root.
65    *
66    * @param resourceName a path relative to helper root
67    * @return a file object pointing to that path; existence is not checked.
68    */
69   @NotNull
70   public static File getHelperFile(@NotNull String resourceName) {
71     return new File(getHelpersRoot(), resourceName);
72   }
73
74
75   public static String getPythonCommunityPath() {
76     File pathFromUltimate = new File(PathManager.getHomePath(), "community/python");
77     if (pathFromUltimate.exists()) {
78       return pathFromUltimate.getPath();
79     }
80     return new File(PathManager.getHomePath(), "python").getPath();
81   }
82 }