aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/integTest/groovy/frege/gradle/plugins/FregePluginIntegTest.groovy6
-rw-r--r--src/main/groovy/frege/gradle/DefaultFregeSourceSet.java8
-rw-r--r--src/main/groovy/frege/gradle/FregeSourceDirectorySet.groovy26
-rw-r--r--src/main/groovy/frege/gradle/FregeSourceSet.java1
-rw-r--r--src/main/groovy/frege/gradle/FregeSourceSetDirectoryFactory.groovy30
-rw-r--r--src/main/groovy/frege/gradle/FregeSourceSetOutputs.groovy7
-rw-r--r--src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java5
7 files changed, 76 insertions, 7 deletions
diff --git a/src/integTest/groovy/frege/gradle/plugins/FregePluginIntegTest.groovy b/src/integTest/groovy/frege/gradle/plugins/FregePluginIntegTest.groovy
index 4142790..2acfa9d 100644
--- a/src/integTest/groovy/frege/gradle/plugins/FregePluginIntegTest.groovy
+++ b/src/integTest/groovy/frege/gradle/plugins/FregePluginIntegTest.groovy
@@ -29,9 +29,11 @@ class FregePluginIntegTest extends AbstractFregeIntegrationSpec {
"""
when:
- def result = run("classes")
+ def result = run(gradleVersion, "classes")
then:
result.task(":compileFrege").outcome == UP_TO_DATE
+ where:
+ gradleVersion << ["2.8", "2.11", "2.12"]
}
@Unroll
@@ -55,6 +57,8 @@ class FregePluginIntegTest extends AbstractFregeIntegrationSpec {
where:
fregeVersion | gradleVersion
+ DEFAULT_FREGE_VERSION | "2.12"
+ "3.22.367-g2737683" | "2.12"
DEFAULT_FREGE_VERSION | "2.9"
DEFAULT_FREGE_VERSION | "2.8"
"3.22.367-g2737683" | "2.9"
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());