diff options
author | Rene Groeschke <rene@gradle.com> | 2016-04-12 21:26:54 +0200 |
---|---|---|
committer | Rene Groeschke <rene@gradle.com> | 2016-04-12 21:28:16 +0200 |
commit | 07502db354b20f0527cd927c0a785031500fddfe (patch) | |
tree | ed6ddd69f87ba00f3f3214a3b23ebf38e6327354 /src/main | |
parent | edb3e94f2e2c14b6f6cd899f0fe5d8227c7f2dbd (diff) | |
download | frege-gradle-plugin-07502db354b20f0527cd927c0a785031500fddfe.tar.gz frege-gradle-plugin-07502db354b20f0527cd927c0a785031500fddfe.tar.bz2 frege-gradle-plugin-07502db354b20f0527cd927c0a785031500fddfe.zip |
Add support for >gradle 2.12
- update wrapper to 2.12
- fix sourcedirectory setup
- add integTest coverage for 2.12
Diffstat (limited to 'src/main')
6 files changed, 71 insertions, 6 deletions
diff --git a/src/main/groovy/frege/gradle/DefaultFregeSourceSet.java b/src/main/groovy/frege/gradle/DefaultFregeSourceSet.java index 3a9bcfc..a1650a1 100644 --- a/src/main/groovy/frege/gradle/DefaultFregeSourceSet.java +++ b/src/main/groovy/frege/gradle/DefaultFregeSourceSet.java @@ -2,18 +2,16 @@ package frege.gradle; import groovy.lang.Closure; import org.gradle.api.file.SourceDirectorySet; -import org.gradle.api.internal.file.DefaultSourceDirectorySet; -import org.gradle.api.internal.file.FileResolver; import org.gradle.util.ConfigureUtil; public class DefaultFregeSourceSet implements FregeSourceSet { private final SourceDirectorySet frege; private final SourceDirectorySet allFrege; - public DefaultFregeSourceSet(String displayName, FileResolver fileResolver) { - this.frege = new DefaultSourceDirectorySet(String.format("%s Frege source", new Object[]{displayName}), fileResolver); + public DefaultFregeSourceSet(String displayName, FregeSourceSetDirectoryFactory sourceSetFactory) { + this.frege = sourceSetFactory.newSourceSetDirectory(String.format("%s Frege source", new Object[]{displayName})); this.frege.getFilter().include(new String[]{"**/*.fr"}); - this.allFrege = new DefaultSourceDirectorySet(String.format("%s Frege source", new Object[]{displayName}), fileResolver); + this.allFrege = sourceSetFactory.newSourceSetDirectory(String.format("%s Frege source", new Object[]{displayName})); this.allFrege.source(this.frege); this.allFrege.getFilter().include(new String[]{"**/*.fr"}); } diff --git a/src/main/groovy/frege/gradle/FregeSourceDirectorySet.groovy b/src/main/groovy/frege/gradle/FregeSourceDirectorySet.groovy new file mode 100644 index 0000000..35110f5 --- /dev/null +++ b/src/main/groovy/frege/gradle/FregeSourceDirectorySet.groovy @@ -0,0 +1,26 @@ +package frege.gradle + +import org.gradle.api.file.FileTree +import org.gradle.api.tasks.util.PatternFilterable + +interface FregeSourceDirectorySet extends PatternFilterable { + def String getName() + + def FregeSourceDirectorySet srcDir(Object srcPath) + + def FregeSourceDirectorySet srcDirs(Object... srcPaths) + + def Set<File> getSrcDirs() + + def FregeSourceDirectorySet setSrcDirs(Iterable<?> srcPaths) + + def FileTree getFiles() + + def PatternFilterable getFilter() + + def FregeSourceSetOutputs getOutput() + + def String getGeneratorTaskName() + + boolean contains(File file) +}
\ No newline at end of file diff --git a/src/main/groovy/frege/gradle/FregeSourceSet.java b/src/main/groovy/frege/gradle/FregeSourceSet.java index 7540930..27654f1 100644 --- a/src/main/groovy/frege/gradle/FregeSourceSet.java +++ b/src/main/groovy/frege/gradle/FregeSourceSet.java @@ -4,4 +4,5 @@ import org.gradle.api.file.SourceDirectorySet; public interface FregeSourceSet { SourceDirectorySet getFrege(); + SourceDirectorySet getAllFrege(); } diff --git a/src/main/groovy/frege/gradle/FregeSourceSetDirectoryFactory.groovy b/src/main/groovy/frege/gradle/FregeSourceSetDirectoryFactory.groovy new file mode 100644 index 0000000..96abc8f --- /dev/null +++ b/src/main/groovy/frege/gradle/FregeSourceSetDirectoryFactory.groovy @@ -0,0 +1,30 @@ +package frege.gradle + +import org.gradle.api.file.SourceDirectorySet +import org.gradle.api.internal.file.DefaultSourceDirectorySet +import org.gradle.api.internal.file.FileResolver +import org.gradle.api.internal.file.SourceDirectorySetFactory +import org.gradle.api.internal.project.ProjectInternal +import org.gradle.util.GradleVersion + +public class FregeSourceSetDirectoryFactory { + private final boolean useFactory; + private final FileResolver fileResolver + private final ProjectInternal project + + public FregeSourceSetDirectoryFactory(ProjectInternal project, FileResolver fileResolver) { + this.fileResolver = fileResolver + this.project = project + this.useFactory = GradleVersion.current().compareTo(GradleVersion.version("2.12")) >= 0; + + } + + public SourceDirectorySet newSourceSetDirectory(String displayName) { + if (useFactory) { + SourceDirectorySetFactory factory = project.getServices().get(SourceDirectorySetFactory.class); + return factory.create(displayName); + } else { + return new DefaultSourceDirectorySet(displayName, fileResolver); + } + } +} diff --git a/src/main/groovy/frege/gradle/FregeSourceSetOutputs.groovy b/src/main/groovy/frege/gradle/FregeSourceSetOutputs.groovy new file mode 100644 index 0000000..07e90a3 --- /dev/null +++ b/src/main/groovy/frege/gradle/FregeSourceSetOutputs.groovy @@ -0,0 +1,7 @@ +package frege.gradle + +import org.gradle.api.file.FileCollection + +interface FregeSourceSetOutputs { + FileCollection getDirs() +}
\ No newline at end of file diff --git a/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java b/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java index 6d7a639..f45dae4 100644 --- a/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java +++ b/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java @@ -1,6 +1,7 @@ package frege.gradle.plugins; import frege.gradle.DefaultFregeSourceSet; +import frege.gradle.FregeSourceSetDirectoryFactory; import frege.gradle.tasks.FregeCompile; import org.gradle.api.Action; import org.gradle.api.Plugin; @@ -8,6 +9,7 @@ import org.gradle.api.Project; import org.gradle.api.file.FileTreeElement; import org.gradle.api.internal.file.FileResolver; import org.gradle.api.internal.plugins.DslObject; +import org.gradle.api.internal.project.ProjectInternal; import org.gradle.api.internal.tasks.DefaultSourceSet; import org.gradle.api.plugins.JavaBasePlugin; import org.gradle.api.plugins.JavaPluginConvention; @@ -44,7 +46,8 @@ public class FregeBasePlugin implements Plugin<Project> { private void configureSourceSetDefaults(final JavaBasePlugin javaBasePlugin) { project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all(new Action<SourceSet>() { public void execute(final SourceSet sourceSet) { - final DefaultFregeSourceSet fregeSourceSet = new DefaultFregeSourceSet(((DefaultSourceSet) sourceSet).getDisplayName(), fileResolver); + FregeSourceSetDirectoryFactory factory = new FregeSourceSetDirectoryFactory((ProjectInternal) project, fileResolver); + final DefaultFregeSourceSet fregeSourceSet = new DefaultFregeSourceSet(((DefaultSourceSet) sourceSet).getDisplayName(), factory); new DslObject(sourceSet).getConvention().getPlugins().put("frege", fregeSourceSet); final String defaultSourcePath = String.format("src/%s/frege", sourceSet.getName()); |