Merge remote-tracking branch 'origin/master'
[idea/community.git] / python / build / groovy / org / jetbrains / intellij / build / pycharm / PythonPluginPropertiesBase.groovy
1 /*
2  * Copyright 2000-2017 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 org.jetbrains.intellij.build.pycharm
17
18 import org.jetbrains.intellij.build.ApplicationInfoProperties
19 import org.jetbrains.intellij.build.LinuxDistributionCustomizer
20 import org.jetbrains.intellij.build.MacDistributionCustomizer
21 import org.jetbrains.intellij.build.WindowsDistributionCustomizer
22 import org.jetbrains.intellij.build.impl.PluginLayout
23
24 /**
25  * @author vlan
26  */
27 abstract class PythonPluginPropertiesBase extends PyCharmPropertiesBase {
28   List<String> communityModules = [
29     "IntelliLang-python",
30     "ipnb",
31     "python-openapi",
32     "python-community-plugin-core",
33     "python-community-plugin-java",
34     "python-community-configure",
35     "python-psi-api",
36     "python-pydev",
37     "python-community",
38   ]
39
40   String pythonCommunityPluginModule = "python-community-plugin-resources"
41
42   PythonPluginPropertiesBase() {
43     super()
44   }
45
46   PluginLayout pythonCommunityPluginLayout(String pluginVersion, @DelegatesTo(PluginLayout.PluginLayoutSpec) Closure body = {}) {
47     def pluginXmlModules = [
48       "IntelliLang-python",
49       "ipnb",
50     ]
51     pythonPlugin(pythonCommunityPluginModule, "python-ce", "python-community-plugin-build-patches",
52                  communityModules, pluginVersion) {
53       withProjectLibrary("markdown4j-2.2")  // Required for ipnb
54       pluginXmlModules.each { module ->
55         excludeFromModule(module, "META-INF/plugin.xml")
56       }
57       excludeFromModule(pythonCommunityPluginModule, "META-INF/python-plugin-dependencies.xml")
58       body.delegate = delegate
59       body()
60     }
61   }
62
63   static PluginLayout pythonPlugin(String mainModuleName, String name, String buildPatchesModule, List<String> modules,
64                                    String pluginVersion, @DelegatesTo(PluginLayout.PluginLayoutSpec) Closure body = {}) {
65     return PluginLayout.plugin(mainModuleName) {
66       directoryName = name
67       mainJarName = "${name}.jar"
68       version = pluginVersion
69       modules.each { module ->
70         withModule(module, mainJarName, false)
71       }
72       withModule(buildPatchesModule, mainJarName, false)
73       withResourceFromModule("python-helpers", "", "helpers")
74       doNotCreateSeparateJarForLocalizableResources()
75       body.delegate = delegate
76       body()
77     }
78   }
79
80   @Override
81   String getBaseArtifactName(ApplicationInfoProperties applicationInfo, String buildNumber) {
82     return null
83   }
84
85   @Override
86   WindowsDistributionCustomizer createWindowsCustomizer(String projectHome) {
87     return null
88   }
89
90   @Override
91   LinuxDistributionCustomizer createLinuxCustomizer(String projectHome) {
92     return null
93   }
94
95   @Override
96   MacDistributionCustomizer createMacCustomizer(String projectHome) {
97     return null
98   }
99 }