From c491e795e0a00b0e5cfc40e14ed652a588063ca9 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 23 Oct 2018 12:30:41 +0200 Subject: [PATCH] Allow creating IntelliJ plugins with Gradle Kotlin DSL build scripts --- .../resources/META-INF/gradle-devkit.xml | 1 + ...ntellijPluginFrameworkSupportProvider.java | 24 ++++++++++++------- ...ntellijPluginFrameworkSupportProvider.java | 19 +++++++++++++++ 3 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 plugins/devkit/devkit-core/src/gradle/KdslGradleIntellijPluginFrameworkSupportProvider.java diff --git a/plugins/devkit/devkit-core/resources/META-INF/gradle-devkit.xml b/plugins/devkit/devkit-core/resources/META-INF/gradle-devkit.xml index 60f3c070e000..ebddaf162f7c 100644 --- a/plugins/devkit/devkit-core/resources/META-INF/gradle-devkit.xml +++ b/plugins/devkit/devkit-core/resources/META-INF/gradle-devkit.xml @@ -1,5 +1,6 @@ + diff --git a/plugins/devkit/devkit-core/src/gradle/GradleIntellijPluginFrameworkSupportProvider.java b/plugins/devkit/devkit-core/src/gradle/GradleIntellijPluginFrameworkSupportProvider.java index 2b8b135e288c..0caa3ac23649 100644 --- a/plugins/devkit/devkit-core/src/gradle/GradleIntellijPluginFrameworkSupportProvider.java +++ b/plugins/devkit/devkit-core/src/gradle/GradleIntellijPluginFrameworkSupportProvider.java @@ -34,7 +34,7 @@ import com.intellij.util.io.HttpRequests; import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.devkit.DevKitBundle; import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder; -import org.jetbrains.plugins.gradle.frameworkSupport.GradleFrameworkSupportProvider; +import org.jetbrains.plugins.gradle.frameworkSupport.KotlinDslGradleFrameworkSupportProvider; import org.jetbrains.plugins.gradle.service.execution.GradleExternalTaskConfigurationType; import javax.swing.*; @@ -47,7 +47,7 @@ import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class GradleIntellijPluginFrameworkSupportProvider extends GradleFrameworkSupportProvider { +public class GradleIntellijPluginFrameworkSupportProvider extends KotlinDslGradleFrameworkSupportProvider { private static final String ID = "gradle-intellij-plugin"; private static final Logger LOG = Logger.getInstance(GradleIntellijPluginFrameworkSupportProvider.class); @@ -98,6 +98,19 @@ public class GradleIntellijPluginFrameworkSupportProvider extends GradleFramewor else { ideVersion = applicationInfo.getFullVersion(); } + configureBuildScript(buildScriptData, pluginVersion, ideVersion); + VirtualFile contentRoot = ArrayUtil.getFirstElement(rootModel.getContentRoots()); + if (contentRoot == null) return; + if (!createPluginXml(projectId, module, contentRoot.getPath())) return; + StartupManager.getInstance(module.getProject()).runWhenProjectIsInitialized(() -> { + FileEditorManager.getInstance(module.getProject()).openFile(buildScriptData.getBuildScriptFile(), true); + createRunConfiguration(module, contentRoot.getPath()); + }); + } + + protected void configureBuildScript(@NotNull BuildScriptDataBuilder buildScriptData, + String pluginVersion, + String ideVersion) { buildScriptData .addPluginDefinitionInPluginsGroup("id 'org.jetbrains.intellij' version '" + pluginVersion + "'") .addOther("intellij {\n version '" + ideVersion + "'\n}\n") @@ -106,13 +119,6 @@ public class GradleIntellijPluginFrameworkSupportProvider extends GradleFramewor " Add change notes here.
\n" + " most HTML tags may be used\"\"\"\n" + "}"); - VirtualFile contentRoot = ArrayUtil.getFirstElement(rootModel.getContentRoots()); - if (contentRoot == null) return; - if (!createPluginXml(projectId, module, contentRoot.getPath())) return; - StartupManager.getInstance(module.getProject()).runWhenProjectIsInitialized(() -> { - FileEditorManager.getInstance(module.getProject()).openFile(buildScriptData.getBuildScriptFile(), true); - createRunConfiguration(module, contentRoot.getPath()); - }); } @Override diff --git a/plugins/devkit/devkit-core/src/gradle/KdslGradleIntellijPluginFrameworkSupportProvider.java b/plugins/devkit/devkit-core/src/gradle/KdslGradleIntellijPluginFrameworkSupportProvider.java new file mode 100644 index 000000000000..8aa471053bef --- /dev/null +++ b/plugins/devkit/devkit-core/src/gradle/KdslGradleIntellijPluginFrameworkSupportProvider.java @@ -0,0 +1,19 @@ +// Copyright 2000-2018 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.idea.devkit.gradle; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder; + +public class KdslGradleIntellijPluginFrameworkSupportProvider extends GradleIntellijPluginFrameworkSupportProvider { + @Override + protected void configureBuildScript(@NotNull BuildScriptDataBuilder buildScriptData, String pluginVersion, String ideVersion) { + buildScriptData + .addPluginDefinitionInPluginsGroup("id(\"org.jetbrains.intellij\") version \"" + pluginVersion + "\"") + .addOther("intellij {\n version = \"" + ideVersion + "\"\n}\n") + .addOther("tasks.getByName(\"patchPluginXml\") {\n" + + " changeNotes(\"\"\"\n" + + " Add change notes here.
\n" + + " most HTML tags may be used\"\"\")\n" + + "}"); + } +}