diff options
author | Mark Perry <maperry78@yahoo.com.au> | 2015-09-16 01:08:45 +1000 |
---|---|---|
committer | Mark Perry <maperry78@yahoo.com.au> | 2015-09-16 01:08:45 +1000 |
commit | 492ec7d5a1856672800b51c898099678bb95ac62 (patch) | |
tree | d9faa96d33f93d01c4857416048fb8ebbfdc74dd /src/main/groovy/frege/gradle | |
parent | 8204c2f65d11f1d4b862286d59f7081178a10d97 (diff) | |
download | frege-gradle-plugin-492ec7d5a1856672800b51c898099678bb95ac62.tar.gz frege-gradle-plugin-492ec7d5a1856672800b51c898099678bb95ac62.tar.bz2 frege-gradle-plugin-492ec7d5a1856672800b51c898099678bb95ac62.zip |
Added help and Frege package dir for compile task
Diffstat (limited to 'src/main/groovy/frege/gradle')
-rw-r--r-- | src/main/groovy/frege/gradle/CompileTask.groovy (renamed from src/main/groovy/frege/gradle/FregeTask.groovy) | 62 | ||||
-rw-r--r-- | src/main/groovy/frege/gradle/DocTask.groovy (renamed from src/main/groovy/frege/gradle/FregeDocTask.groovy) | 3 | ||||
-rw-r--r-- | src/main/groovy/frege/gradle/FregePlugin.groovy | 21 | ||||
-rw-r--r-- | src/main/groovy/frege/gradle/QuickCheckTask.groovy (renamed from src/main/groovy/frege/gradle/FregeQuickCheckTask.groovy) | 36 | ||||
-rw-r--r-- | src/main/groovy/frege/gradle/ReplTask.groovy (renamed from src/main/groovy/frege/gradle/FregeReplTask.groovy) | 2 |
5 files changed, 106 insertions, 18 deletions
diff --git a/src/main/groovy/frege/gradle/FregeTask.groovy b/src/main/groovy/frege/gradle/CompileTask.groovy index a85b4cc..d0a5e21 100644 --- a/src/main/groovy/frege/gradle/FregeTask.groovy +++ b/src/main/groovy/frege/gradle/CompileTask.groovy @@ -1,17 +1,22 @@ package frege.gradle import org.gradle.api.DefaultTask +import org.gradle.api.Project import org.gradle.api.tasks.* import org.gradle.process.internal.DefaultJavaExecAction import org.gradle.process.internal.JavaExecAction import org.gradle.api.internal.file.FileResolver -import org.gradle.tooling.BuildException -class FregeTask extends DefaultTask { +class CompileTask extends DefaultTask { static String DEFAULT_CLASSES_SUBDIR = "classes/main" // TODO: should this come from a convention? static String DEFAULT_SRC_DIR = "src/main/frege" // TODO: should this come from a source set? + static String DEFAULT_TEST_CLASSES_DIR = "classes/test" + static String DEFAULT_TEST_SRC_DIR = "src/test/frege" + + Boolean help = false + @Optional @Input String xss = "4m" @@ -40,10 +45,38 @@ class FregeTask extends DefaultTask { String module = "" @Optional @InputDirectory - File sourceDir = new File(project.projectDir, DEFAULT_SRC_DIR).exists() ? new File(project.projectDir, DEFAULT_SRC_DIR) : null + File sourceDir = deduceSourceDir(project) @Optional @OutputDirectory - File outputDir = new File(project.buildDir, DEFAULT_CLASSES_SUBDIR) + File outputDir = deduceClassesDir(project) + + @Optional + List<String> fregePackageDirs = [] + + static File deduceSourceDir(File projectDir, String subdir) { + new File(projectDir, subdir).exists() ? new File(projectDir, subdir) : null + } + + static File deduceSourceDir(Project project) { + deduceSourceDir(project.projectDir, DEFAULT_SRC_DIR) + } + + static File deduceClassesDir(File projectDir, String subdir) { + new File(projectDir, subdir) + } + + static File deduceClassesDir(Project project) { + deduceClassesDir(project.buildDir, DEFAULT_CLASSES_SUBDIR) + } + + static File deduceTestClassesDir(Project project) { + deduceClassesDir(project.buildDir, DEFAULT_TEST_CLASSES_DIR) + } + + static File deduceTestSrcDir(Project project) { + deduceSourceDir(project.projectDir, DEFAULT_TEST_SRC_DIR) + } + @TaskAction void executeCompile() { @@ -59,12 +92,16 @@ class FregeTask extends DefaultTask { action.setMain("frege.compiler.Main") action.setClasspath(project.files(project.configurations.compile)) - List jvmargs = [] - if (xss) - jvmargs << "-Xss$xss" - action.setJvmArgs(jvmargs) - - def args = allArgs ? allArgs.split().toList() : assembleArguments() + def args = [] + if (help) { + args << "-help" + } else { + List jvmargs = [] + if (xss) + jvmargs << "-Xss$xss" + action.setJvmArgs(jvmargs) + args = allArgs ? allArgs.split().toList() : assembleArguments() + } logger.info("Calling Frege compiler with args: '$args'") action.args(args) @@ -92,6 +129,11 @@ class FregeTask extends DefaultTask { args << "-d" args << outputDir + if (!fregePackageDirs.isEmpty()) { + args << "-fp" + args << fregePackageDirs.join(";") + } + if (!module && !extraArgs) { logger.info "no module and no extra args given: compiling all of the sourceDir" if (sourceDir != null) { diff --git a/src/main/groovy/frege/gradle/FregeDocTask.groovy b/src/main/groovy/frege/gradle/DocTask.groovy index 077c4e5..c020cf6 100644 --- a/src/main/groovy/frege/gradle/FregeDocTask.groovy +++ b/src/main/groovy/frege/gradle/DocTask.groovy @@ -10,7 +10,7 @@ import org.gradle.api.tasks.TaskAction import org.gradle.process.internal.DefaultJavaExecAction import org.gradle.process.internal.JavaExecAction -class FregeDocTask extends DefaultTask { +class DocTask 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? @@ -49,6 +49,7 @@ class FregeDocTask extends DefaultTask { args << '-d' << targetDir.absolutePath if (exclude) args << '-x' << exclude args << module + action.args args action.execute() } diff --git a/src/main/groovy/frege/gradle/FregePlugin.groovy b/src/main/groovy/frege/gradle/FregePlugin.groovy index 21958b0..3b4d60b 100644 --- a/src/main/groovy/frege/gradle/FregePlugin.groovy +++ b/src/main/groovy/frege/gradle/FregePlugin.groovy @@ -2,6 +2,7 @@ package frege.gradle import org.gradle.api.Plugin import org.gradle.api.Project +import fj.data.Option class FregePlugin implements Plugin<Project> { @@ -12,18 +13,30 @@ class FregePlugin implements Plugin<Project> { project.apply(plugin: 'base') def e = (FregePluginExtension) project.extensions.create("frege", FregePluginExtension) - project.task('compileFrege', type: FregeTask, group: 'Build') << { + project.task('compileFrege', type: CompileTask, group: 'Build') << { } project.tasks.classes.dependsOn("compileFrege") - def replTask = project.task('fregeRepl', type: FregeReplTask, group: 'Tools', dependsOn: 'compileFrege') + project.task('compileTestFrege', type: CompileTask, group: 'Build') { + sourceDir = CompileTask.deduceTestSrcDir(project) + outputDir = CompileTask.deduceTestClassesDir(project) +// logger.info("compileTestFrege debug") +// logger.info("projectDir ${project.projectDir}") +// logger.info("defaultSrc ${CompileTask.DEFAULT_SRC_DIR}") + fregePackageDirs = Option.fromNull( + CompileTask.deduceClassesDir(project) + ).map { d -> [d.absolutePath] }.orSome([]) + } + project.tasks.testClasses.dependsOn("compileTestFrege") + + def replTask = project.task('fregeRepl', type: ReplTask, group: 'Tools', dependsOn: 'compileFrege') replTask.outputs.upToDateWhen { false } // always run, regardless of up to date checks - def checkTask = project.task('quickCheck', type: FregeQuickCheckTask, group: 'Tools', dependsOn: 'compileFrege') + def checkTask = project.task('fregeQuickCheck', type: QuickCheckTask, group: 'Tools', dependsOn: 'compileFrege') checkTask.outputs.upToDateWhen { false } // always run, regardless of up to date checks - project.task('fregeDoc', type: FregeDocTask, group: 'Tools', dependsOn: 'compileFrege') + project.task('fregeDoc', type: DocTask, group: 'Tools', dependsOn: 'compileFrege') project.task('fregeNativeGen', type: NativeGenTask, group: 'Tools') diff --git a/src/main/groovy/frege/gradle/FregeQuickCheckTask.groovy b/src/main/groovy/frege/gradle/QuickCheckTask.groovy index 31f7d27..7da7924 100644 --- a/src/main/groovy/frege/gradle/FregeQuickCheckTask.groovy +++ b/src/main/groovy/frege/gradle/QuickCheckTask.groovy @@ -8,7 +8,7 @@ import org.gradle.api.tasks.TaskAction import org.gradle.process.internal.DefaultJavaExecAction import org.gradle.process.internal.JavaExecAction -class FregeQuickCheckTask extends DefaultTask { +class QuickCheckTask extends DefaultTask { // more options to consider: /* @@ -45,17 +45,49 @@ class FregeQuickCheckTask extends DefaultTask { sequentially. It makes it feasable to run more tests per predicate. */ + + Boolean verbose = true + Boolean listAvailable = false + Boolean help = false + Integer num = 100 + List<String> includePredicates + List<String> excludePredicates + String moduleName + String moduleDirectory + String moduleJar + List<String> classpathDirectories = + ["$project.buildDir/classes/main/"] +// ["$project.buildDir/classes/main/", "$project.buildDir/classes/test/"] + + @TaskAction void runQuickCheck() { FileResolver fileResolver = getServices().get(FileResolver.class) JavaExecAction action = new DefaultJavaExecAction(fileResolver) action.setMain("frege.tools.Quick") + + action.standardInput = System.in + action.standardOutput = System.out + action.errorOutput = System.err + action.setClasspath(project.files(project.configurations.testRuntime)) project.configurations.testRuntime.each { println it } - action.args("$project.buildDir/classes/main/") // test all in build dir and below build/classes/test/ + def args = [] + if (help) { + + } else { + if (verbose) args << "-v" + + args = args + classpathDirectories +// args.action.args(classpathDirectories) // test all in build dir and below build/classes/test/ + + + } + + action.args args action.execute() } diff --git a/src/main/groovy/frege/gradle/FregeReplTask.groovy b/src/main/groovy/frege/gradle/ReplTask.groovy index d79a73f..1f570eb 100644 --- a/src/main/groovy/frege/gradle/FregeReplTask.groovy +++ b/src/main/groovy/frege/gradle/ReplTask.groovy @@ -6,7 +6,7 @@ import org.gradle.api.tasks.* import org.gradle.process.internal.DefaultJavaExecAction import org.gradle.process.internal.JavaExecAction -class FregeReplTask extends DefaultTask { +class ReplTask extends DefaultTask { static String DEFAULT_SRC_DIR = "src/main/frege" // TODO: should this come from a source set? static String DEFAULT_CLASSES_SUBDIR = "classes/main" // TODO: should this come from a convention? |