Commit 9596ad7d authored by Aleksey Rostovskiy's avatar Aleksey Rostovskiy
Browse files

IDEA-CR-45765: PY-34993 Prepare PyCharm + Anaconda plugin installation process

parent f9c9e2f6
Showing with 129 additions and 34 deletions
+129 -34
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.intellij.build.pycharm
import org.jetbrains.intellij.build.*
import static org.jetbrains.intellij.build.pycharm.PyCharmPropertiesBase.downloadMiniconda
/**
* @author Aleksey.Rostovskiy
*/
class PyCharmCommunityCondaProperties extends PyCharmCommunityProperties {
PyCharmCommunityCondaProperties(String communityHome) {
super(communityHome)
productLayout.bundledPluginModules = super.productLayout.bundledPluginModules + "intellij.python.conda"
}
@Override
String getBaseArtifactName(ApplicationInfoProperties applicationInfo, String buildNumber) {
"pycharmPC-anaconda-$buildNumber"
}
@Override
WindowsDistributionCustomizer createWindowsCustomizer(String projectHome) {
return new PyCharmWindowsDistributionCustomizer() {
{
icoPath = "$projectHome/python/resources/PyCharmCore.ico"
icoPathForEAP = "$projectHome/python/resources/PyCharmCore_EAP.ico"
include32BitLauncher = false
installerImagesPath = "$projectHome/python/build/resources"
fileAssociations = ["py"]
}
@Override
String getFullNameIncludingEdition(ApplicationInfoProperties applicationInfo) {
"PyCharm Community Edition with Anaconda plugin"
}
@Override
String getBaseDownloadUrlForJre() { "https://download.jetbrains.com/python" }
@Override
void copyAdditionalFiles(BuildContext context, String targetDirectory) {
super.copyAdditionalFiles(context, targetDirectory)
downloadMiniconda(context, targetDirectory, "Windows")
}
}
}
@Override
LinuxDistributionCustomizer createLinuxCustomizer(String projectHome) {
return new LinuxDistributionCustomizer() {
{
iconPngPath = "$projectHome/python/resources/PyCharmCore128.png"
iconPngPathForEAP = "$projectHome/python/resources/PyCharmCore128_EAP.png"
}
@Override
String getRootDirectoryName(ApplicationInfoProperties applicationInfo, String buildNumber) {
"pycharm-community-anaconda-${applicationInfo.isEAP ? buildNumber : applicationInfo.fullVersion}"
}
@Override
void copyAdditionalFiles(BuildContext context, String targetDirectory) {
downloadMiniconda(context, targetDirectory, "Linux")
}
}
}
@Override
MacDistributionCustomizer createMacCustomizer(String projectHome) {
return new PyCharmMacDistributionCustomizer() {
{
icnsPath = "$projectHome/python/resources/PyCharmCore.icns"
icnsPathForEAP = "$projectHome/python/resources/PyCharmCore_EAP.icns"
bundleIdentifier = "com.jetbrains.pycharm"
dmgImagePath = "$projectHome/python/build/dmg_background.tiff"
}
@Override
String getRootDirectoryName(ApplicationInfoProperties applicationInfo, String buildNumber) {
String suffix = applicationInfo.isEAP ? " ${applicationInfo.majorVersion}.${applicationInfo.minorVersion} EAP" : ""
"PyCharm CE with Anaconda plugin${suffix}.app"
}
@Override
void copyAdditionalFiles(BuildContext context, String targetDirectory) {
super.copyAdditionalFiles(context, targetDirectory)
downloadMiniconda(context, targetDirectory, "MacOSX")
}
}
}
@Override
String getOutputDirectoryName(ApplicationInfoProperties applicationInfo) {
"pycharm-ce-anaconda"
}
}
\ No newline at end of file
......@@ -83,7 +83,7 @@ class PyCharmCommunityProperties extends PyCharmPropertiesBase {
@Override
LinuxDistributionCustomizer createLinuxCustomizer(String projectHome) {
return new PyCharmLinuxDistributionCustomizer() {
return new LinuxDistributionCustomizer() {
{
iconPngPath = "$projectHome/python/resources/PyCharmCore128.png"
iconPngPathForEAP = "$projectHome/python/resources/PyCharmCore128_EAP.png"
......
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.intellij.build.pycharm
import org.jetbrains.intellij.build.BuildContext
import org.jetbrains.intellij.build.LinuxDistributionCustomizer
class PyCharmLinuxDistributionCustomizer extends LinuxDistributionCustomizer {
@Override
void copyAdditionalFiles(BuildContext context, String targetDirectory) {
context.ant.mkdir(dir: "$targetDirectory/$PyCharmBuildOptions.minicondaInstallerFolderName")
context.ant.get(src: "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh",
dest: "$targetDirectory/$PyCharmBuildOptions.minicondaInstallerFolderName")
}
}
......@@ -32,10 +32,6 @@ class PyCharmMacDistributionCustomizer extends MacDistributionCustomizer {
include(name: "skeletons-mac*.zip")
}
}
context.ant.mkdir(dir: "$targetDirectory/$PyCharmBuildOptions.minicondaInstallerFolderName")
context.ant.get(src: "https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh",
dest: "$targetDirectory/$PyCharmBuildOptions.minicondaInstallerFolderName")
}
@Override
......
......@@ -168,4 +168,12 @@ abstract class PyCharmPropertiesBase extends ProductProperties {
}
}
}
static void downloadMiniconda(BuildContext context, String targetDirectory, String osName) {
final String installer = "Miniconda3-latest-$osName-x86_64.${if (osName == "Windows") "exe" else "sh"}"
context.ant.mkdir(dir: "$targetDirectory/$PyCharmBuildOptions.minicondaInstallerFolderName")
context.ant.get(src: "https://repo.continuum.io/miniconda/$installer",
dest: "$targetDirectory/$PyCharmBuildOptions.minicondaInstallerFolderName")
}
}
\ No newline at end of file
......@@ -31,9 +31,5 @@ class PyCharmWindowsDistributionCustomizer extends WindowsDistributionCustomizer
include(name: "skeletons-win*.zip")
}
}
context.ant.mkdir(dir: "$targetDirectory/$PyCharmBuildOptions.minicondaInstallerFolderName")
context.ant.get(src: "https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe",
dest: "$targetDirectory/$PyCharmBuildOptions.minicondaInstallerFolderName")
}
}
\ No newline at end of file
......@@ -5,7 +5,6 @@ intellij.markdown
intellij.platform.langInjection
intellij.platform.remoteServers.git
intellij.properties
intellij.python.conda
intellij.python.copyright
intellij.python.langInjection
intellij.python.reStructuredText
......
......@@ -10,5 +10,7 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="intellij.python.community.impl" />
<orderEntry type="library" name="kotlin-stdlib-jdk8" level="project" />
<orderEntry type="module" module-name="intellij.platform.ide" />
<orderEntry type="module" module-name="intellij.platform.ide.impl" />
</component>
</module>
\ No newline at end of file
......@@ -2,4 +2,15 @@
<extensions defaultExtensionNs="Pythonid">
<pythonSdkTypeComparator implementation="com.jetbrains.python.sdk.PyPreferringCondaSdkTypeComparator"/>
</extensions>
<extensionPoints>
<extensionPoint qualifiedName="Pythonid.pythonSdkTypeComparator" interface="com.jetbrains.python.sdk.PySdkTypeComparator"/>
</extensionPoints>
<actions>
<action id="InstallMiniconda" class="com.jetbrains.python.conda.InstallCondaAction"
text="Install Miniconda 3...">
<add-to-group group-id="ToolsMenu" anchor="last"/>
</action>
</actions>
</idea-plugin>
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.jetbrains.python.actions
package com.jetbrains.python.conda
import com.intellij.notification.Notification
import com.intellij.notification.NotificationType
......@@ -13,6 +13,7 @@ import com.intellij.openapi.project.DumbAware
import com.intellij.openapi.project.Project
import com.intellij.util.ExceptionUtil
import com.jetbrains.python.PyBundle
import com.jetbrains.python.actions.InstallCondaActionImpl
import icons.PythonIcons.Python.Anaconda
/**
......
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.jetbrains.python.actions
package com.jetbrains.python.conda
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
import com.intellij.openapi.fileChooser.ex.FileChooserDialogImpl
......@@ -10,6 +10,7 @@ import com.intellij.openapi.ui.TextFieldWithBrowseButton
import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.ui.layout.*
import com.jetbrains.python.PyBundle
import com.jetbrains.python.actions.InstallCondaActionImpl
import javax.swing.JTextField
/**
......
......@@ -34,6 +34,8 @@ public class PyCharmCustomizeIDEWizardStepsProvider implements CustomizeIDEWizar
steps.add(new CustomizeFeaturedPluginsStepPanel(groups));
steps.add(new PyCharmCustomizeCondaSetupStep());
if (PythonMinicondaLocator.isInstallerExists()) {
steps.add(new PyCharmCustomizeCondaSetupStep());
}
}
}
......@@ -720,7 +720,6 @@
<extensionPoint qualifiedName="Pythonid.debugSessionFactory" interface="com.jetbrains.python.debugger.PyDebugSessionFactory"/>
<extensionPoint qualifiedName="Pythonid.customPackageIdentifier" interface="com.jetbrains.python.psi.PyCustomPackageIdentifier"/>
<extensionPoint qualifiedName="Pythonid.pythonSdkComparator" interface="com.jetbrains.python.sdk.PySdkComparator" />
<extensionPoint qualifiedName="Pythonid.pythonSdkTypeComparator" interface="com.jetbrains.python.sdk.PySdkTypeComparator"/>
<extensionPoint qualifiedName="Pythonid.pyPregeneratedSkeletonsProvider"
interface="com.jetbrains.python.sdk.skeletons.PyPregeneratedSkeletonsProvider"/>
<extensionPoint qualifiedName="Pythonid.pyAddSdkProvider" interface="com.jetbrains.python.sdk.add.PyAddSdkProvider"/>
......@@ -883,11 +882,6 @@
<add-to-group group-id="ToolsMenu" anchor="last"/>
</group>
<action id="InstallMiniconda" class="com.jetbrains.python.actions.InstallCondaAction"
text="Install Miniconda 3...">
<add-to-group group-id="ToolsMenu" anchor="last"/>
</action>
<action id="PythonGenerateDictionaries" class="com.jetbrains.python.spellchecker.PythonSpellcheckerGenerateDictionariesAction"
text="Generate Python Spellchecker Dictionaries" internal="true">
<add-to-group group-id="Internal"/>
......
......@@ -19,8 +19,9 @@ object PythonMinicondaLocator {
fun getMinicondaInstallerPath() = getMinicondaInstallerFile()?.absolutePath
/**
* @return exists miniconda3 installer path in installation folder or not
* @return exists miniconda3 installer in distribution or not
*/
@JvmStatic
fun isInstallerExists() = getMinicondaInstallerFile() != null
private fun getMinicondaInstallerFolder() = File(PathManager.getHomePath(), "minicondaInstaller")
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment