summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMark Perry <maperry78@yahoo.com.au>2015-09-16 01:08:45 +1000
committerMark Perry <maperry78@yahoo.com.au>2015-09-16 01:08:45 +1000
commit492ec7d5a1856672800b51c898099678bb95ac62 (patch)
treed9faa96d33f93d01c4857416048fb8ebbfdc74dd /src/main
parent8204c2f65d11f1d4b862286d59f7081178a10d97 (diff)
downloadfrege-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')
-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.groovy21
-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?