aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorRene Groeschke <rene@gradle.com>2015-12-14 22:56:51 +0100
committerRene Groeschke <rene@gradle.com>2015-12-14 23:21:11 +0100
commit7fb3f43096fa6b142eb059e1eeaca79abcaa3009 (patch)
tree69c098b1c37495c77b29d66eefe5376f7117facd /src/main
parentfcac60e0205340ed303ee58781e2d697e5630b90 (diff)
downloadfrege-gradle-plugin-7fb3f43096fa6b142eb059e1eeaca79abcaa3009.tar.gz
frege-gradle-plugin-7fb3f43096fa6b142eb059e1eeaca79abcaa3009.tar.bz2
frege-gradle-plugin-7fb3f43096fa6b142eb059e1eeaca79abcaa3009.zip
seme more coverage and work on frege doc task.
TODO fix fregedoc task for mixed java + frege sources
Diffstat (limited to 'src/main')
-rw-r--r--src/main/groovy/frege/gradle/FregeSourceSet.java6
-rw-r--r--src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java1
-rw-r--r--src/main/groovy/frege/gradle/plugins/FregePlugin.groovy20
-rw-r--r--src/main/groovy/frege/gradle/tasks/FregeDoc.groovy66
4 files changed, 51 insertions, 42 deletions
diff --git a/src/main/groovy/frege/gradle/FregeSourceSet.java b/src/main/groovy/frege/gradle/FregeSourceSet.java
index 8706ee2..7540930 100644
--- a/src/main/groovy/frege/gradle/FregeSourceSet.java
+++ b/src/main/groovy/frege/gradle/FregeSourceSet.java
@@ -1,7 +1,7 @@
package frege.gradle;
-/**
- * Created by Rene on 20/11/15.
- */
+import org.gradle.api.file.SourceDirectorySet;
+
public interface FregeSourceSet {
+ SourceDirectorySet getFrege();
}
diff --git a/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java b/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java
index a2ebc25..6d7a639 100644
--- a/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java
+++ b/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java
@@ -71,6 +71,7 @@ public class FregeBasePlugin implements Plugin<Project> {
compile.setDescription(String.format("Compiles the %s Frege source.", sourceSet.getName()));
compile.setSource(fregeSourceSet.getFrege());
project.getTasks().getByName(sourceSet.getClassesTaskName()).dependsOn(compileTaskName);
+ sourceSet.compiledBy(compile);
}
});
}
diff --git a/src/main/groovy/frege/gradle/plugins/FregePlugin.groovy b/src/main/groovy/frege/gradle/plugins/FregePlugin.groovy
index 88864cc..13c1e9a 100644
--- a/src/main/groovy/frege/gradle/plugins/FregePlugin.groovy
+++ b/src/main/groovy/frege/gradle/plugins/FregePlugin.groovy
@@ -1,11 +1,13 @@
package frege.gradle.plugins
-
import frege.gradle.tasks.FregeDoc
import frege.gradle.tasks.FregeNativeGen
import frege.gradle.tasks.FregeQuickCheck
import frege.gradle.tasks.FregeRepl
import org.gradle.api.Plugin
import org.gradle.api.Project
+import org.gradle.api.file.FileCollection
+import org.gradle.api.tasks.SourceSet
+import org.gradle.api.tasks.util.PatternSet
class FregePlugin implements Plugin<Project> {
@@ -25,10 +27,24 @@ class FregePlugin implements Plugin<Project> {
project.tasks.test.dependsOn("fregeQuickCheck")
- project.task('fregeDoc', type: FregeDoc, group: 'frege', dependsOn: 'compileFrege')
+
+ configureFregeDoc()
project.task('fregeNativeGen', type: FregeNativeGen, group: 'frege')
}
+ def configureFregeDoc() {
+ FregeDoc fregeDoc = project.tasks.create('fregeDoc', FregeDoc)
+ fregeDoc.group = 'frege'
+ fregeDoc.dependsOn "compileFrege" // TODO remove
+ SourceSet mainSourceSet = project.sourceSets.main
+ fregeDoc.module = mainSourceSet.output.classesDir.absolutePath
+ fregeDoc.classpath = mainSourceSet.runtimeClasspath
+ }
+
+
+ FileCollection findJavaModulesToExclude(SourceSet sourceSet) {
+ return sourceSet.allJava.asFileTree.matching { PatternSet pattern -> pattern.include("**/*.java")}
+ }
}
diff --git a/src/main/groovy/frege/gradle/tasks/FregeDoc.groovy b/src/main/groovy/frege/gradle/tasks/FregeDoc.groovy
index 7ac49a7..af4b924 100644
--- a/src/main/groovy/frege/gradle/tasks/FregeDoc.groovy
+++ b/src/main/groovy/frege/gradle/tasks/FregeDoc.groovy
@@ -1,14 +1,13 @@
package frege.gradle.tasks
+import org.gradle.api.Action
import org.gradle.api.DefaultTask
-import org.gradle.api.internal.file.FileResolver
+import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.Input
-import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
-import org.gradle.process.internal.DefaultJavaExecAction
-import org.gradle.process.internal.JavaExecAction
+import org.gradle.process.JavaExecSpec
class FregeDoc extends DefaultTask {
@@ -30,53 +29,46 @@ class FregeDoc extends DefaultTask {
*
*/
- static String DEFAULT_SRC_DIR = "src/main/frege" // TODO: should this come from a source set?
static String DEFAULT_DOCS_SUBDIR = "docs/frege" // TODO: should this come from a convention?
- Boolean help = false
-
- @Optional
- @InputDirectory
- File sourceDir = new File(project.projectDir, DEFAULT_SRC_DIR).exists() ? new File(project.projectDir, DEFAULT_SRC_DIR) : null
-
@Optional
@OutputDirectory
File targetDir = new File(project.buildDir, DEFAULT_DOCS_SUBDIR)
@Input
- String module = "$project.buildDir/classes/main" // module name or directory or class path. Default is all production modules
+ String module // module name or directory or class path. Default is all production modules
- @Input @Optional
+ @Input
+ @Optional
String exclude = null
- @Input @Optional
+ @Input
+ @Optional
Boolean verbose = null
+ FileCollection classpath
+
@TaskAction
void fregedoc() {
-
- FileResolver fileResolver = getServices().get(FileResolver.class)
- JavaExecAction action = new DefaultJavaExecAction(fileResolver)
- action.setMain("frege.tools.Doc")
- action.workingDir = sourceDir ?: project.projectDir
- action.standardInput = System.in
- action.standardOutput = System.out
- action.errorOutput = System.err
- action.setClasspath(project.files(project.configurations.compile) + project.files("$project.buildDir/classes/main"))
-
- def args = []
- if (help) {
- args << "-h"
- } else {
- if (verbose) args << '-v'
- args << '-d' << targetDir.absolutePath
- if (exclude) args << '-x' << exclude
- args << module
- }
-
- logger.info("Calling Frege Doc with args: '$args'")
- action.args args
- action.execute()
+ def result = project.javaexec(new Action<JavaExecSpec>() {
+ @Override
+ void execute(JavaExecSpec javaExecSpec) {
+ if (verbose) {
+ javaExecSpec.args '-v'
+ }
+ javaExecSpec.args '-d', targetDir.absolutePath
+ if (exclude) {
+ javaExecSpec.args '-x', exclude
+ }
+ javaExecSpec.args(module)
+ javaExecSpec.main = "frege.tools.Doc"
+ javaExecSpec.workingDir = project.projectDir
+ javaExecSpec.standardInput = System.in
+ javaExecSpec.standardOutput = System.out
+ javaExecSpec.errorOutput = System.err
+ javaExecSpec.classpath = this.classpath
+ }
+ })
}
}