POC: Import IDE configuration from external systems

Extract gradle model to plugin
This commit is contained in:
Nikita Skvortsov
2017-08-14 18:30:46 +03:00
parent e747480fd6
commit 1a91ad0420
5 changed files with 10 additions and 17 deletions
@@ -167,8 +167,15 @@ public class GradleMiscImportingTest extends GradleImportingTestCase {
@Test
public void testCompilerConfigurationSettingsImport() throws Exception {
final String pathToPlugin = getClass().getResource("/testCompilerConfigurationSettingsImport/gradle-idea-ext.jar").toString();
importProject(
"apply plugin: 'idea'\n" +
"buildscript {\n" +
" dependencies {\n" +
" classpath files('" + pathToPlugin + "')\n" +
" }\n" +
"}\n" +
"apply plugin: 'org.jetbrains.gradle.plugin.idea-ext'\n" +
"idea {\n" +
" project.settings {\n" +
" compiler {\n" +
@@ -23,7 +23,6 @@ import org.jetbrains.plugins.gradle.model.DefaultIntelliJSettings
import org.jetbrains.plugins.gradle.model.IntelliJProjectSettings
import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
import org.jetbrains.plugins.gradle.tooling.ModelBuilderService
import org.jetbrains.plugins.gradle.tooling.internal.DynamicSettings
/**
* @author Vladislav.Soroka
@@ -41,7 +40,7 @@ class IntelliJProjectSettingsBuilder implements ModelBuilderService {
ExtensionAware extensionAware = project.plugins.findPlugin(IdeaPlugin.class)?.model?.project as ExtensionAware
if (extensionAware) {
def object = extensionAware.extensions.findByName("settings")
if (object instanceof DynamicSettings && !object.objects.isEmpty()) {
if (object) {
return new DefaultIntelliJSettings(object.toString())
}
}
@@ -24,7 +24,6 @@ import org.jetbrains.plugins.gradle.model.DefaultIntelliJSettings
import org.jetbrains.plugins.gradle.model.IntelliJSettings
import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
import org.jetbrains.plugins.gradle.tooling.ModelBuilderService
import org.jetbrains.plugins.gradle.tooling.internal.DynamicSettings
/**
* @author Vladislav.Soroka
@@ -42,7 +41,7 @@ class IntelliJSettingsBuilder implements ModelBuilderService {
ExtensionAware extensionAware = project.plugins.findPlugin(IdeaPlugin.class)?.model?.module as ExtensionAware
if (extensionAware) {
def object = extensionAware.extensions.findByName("settings")
if (object instanceof DynamicSettings && !(object as DynamicSettings).objects.isEmpty()) {
if (object) {
return new DefaultIntelliJSettings(object.toString())
}
}
@@ -1,6 +1,5 @@
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
import org.jetbrains.plugins.gradle.tooling.internal.DynamicSettings
import org.jetbrains.plugins.gradle.tooling.internal.ExtraModelBuilder
System.setProperty("idea.active", "true")
@@ -55,16 +54,5 @@ class JetGradlePlugin implements Plugin<Gradle> {
it.register(extraModelBuilderInstance)
}
}
gradle.allprojects { project ->
project.pluginManager.withPlugin('idea') { plugin ->
def ideaModel = project.extensions.getByName('idea')
if (project.parent == null && !ideaModel.project.extensions.findByName('settings')) {
ideaModel.project.extensions.create('settings', DynamicSettings)
}
if (!ideaModel.module.extensions.findByName('settings')) {
ideaModel.module.extensions.create('settings', DynamicSettings)
}
}
}
}
}