diff options
Diffstat (limited to 'src/main/groovy')
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 + } + }) } } |