Restore the ability to add maya interpreter to PyCharm (PY-21723)
[idea/community.git] / python / src / com / jetbrains / python / sdk / flavors / MayaSdkFlavor.kt
1 /*
2  * Copyright 2000-2016 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.sdk.flavors
17
18 import com.intellij.openapi.util.io.FileUtil
19 import com.intellij.openapi.vfs.VirtualFile
20 import icons.PythonIcons
21 import java.io.File
22 import javax.swing.Icon
23
24 /**
25  * @author traff
26  */
27 class MayaSdkFlavor private constructor() : PythonSdkFlavor() {
28
29   override fun isValidSdkHome(path: String): Boolean {
30     val file = File(path)
31     return file.isFile && isValidSdkPath(file) || isMayaFolder(file)
32   }
33
34   override fun isValidSdkPath(file: File): Boolean {
35     val name = FileUtil.getNameWithoutExtension(file).toLowerCase()
36     return name.startsWith("mayapy")
37   }
38
39   override fun getVersionOption(): String {
40     return "--version"
41   }
42
43   override fun getName(): String {
44     return "MayaPy"
45   }
46
47   override fun getIcon(): Icon {
48     return PythonIcons.Python.Python //TODO: maya icon
49   }
50
51   override fun getSdkPath(path: VirtualFile): VirtualFile? {
52     if (isMayaFolder(File(path.path))) {
53       return path.findFileByRelativePath("Contents/bin/mayapy")
54     }
55     return path
56   }
57
58   companion object {
59
60     var INSTANCE = MayaSdkFlavor()
61
62     private fun isMayaFolder(file: File): Boolean {
63       return file.isDirectory && file.name == "Maya.app"
64     }
65   }
66 }
67
68
69 class MayaFlavorProvider: PythonFlavorProvider {
70   override fun getFlavor(platformIndependent: Boolean) = MayaSdkFlavor.INSTANCE
71 }