aboutsummaryrefslogtreecommitdiff
path: root/src/main/groovy/frege/gradle/tasks/FregeRepl.groovy
diff options
context:
space:
mode:
authorDierk König <dierk.koenig@canoo.com>2015-11-21 10:09:31 +0100
committerDierk König <dierk.koenig@canoo.com>2015-11-21 10:09:31 +0100
commitf0807811f48c50b6a5fe7816ef48c148be9f9903 (patch)
treec61df925b637d26c95086510ee471ac861a36731 /src/main/groovy/frege/gradle/tasks/FregeRepl.groovy
parentfa6dce676590c83bc84d130e1241cf585f88a469 (diff)
parent73dd702743a5b4d8816e495e55c19f391669fc25 (diff)
downloadfrege-gradle-plugin-f0807811f48c50b6a5fe7816ef48c148be9f9903.tar.gz
frege-gradle-plugin-f0807811f48c50b6a5fe7816ef48c148be9f9903.tar.bz2
frege-gradle-plugin-f0807811f48c50b6a5fe7816ef48c148be9f9903.zip
Merge pull request #28 from breskeby/base-plugin
Base plugin
Diffstat (limited to 'src/main/groovy/frege/gradle/tasks/FregeRepl.groovy')
-rw-r--r--src/main/groovy/frege/gradle/tasks/FregeRepl.groovy39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/main/groovy/frege/gradle/tasks/FregeRepl.groovy b/src/main/groovy/frege/gradle/tasks/FregeRepl.groovy
new file mode 100644
index 0000000..64e0186
--- /dev/null
+++ b/src/main/groovy/frege/gradle/tasks/FregeRepl.groovy
@@ -0,0 +1,39 @@
+package frege.gradle.tasks
+
+import org.gradle.api.DefaultTask
+import org.gradle.api.internal.file.FileResolver
+import org.gradle.api.tasks.*
+import org.gradle.process.internal.DefaultJavaExecAction
+import org.gradle.process.internal.JavaExecAction
+
+class FregeRepl 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?
+
+ @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_CLASSES_SUBDIR)
+
+ @TaskAction
+ void openFregeRepl() {
+
+ if (sourceDir != null && !sourceDir.exists() ) {
+ def currentDir = new File('.')
+ logger.info "Intended source dir '${sourceDir.absolutePath}' doesn't exist. Using current dir '${currentDir.absolutePath}' ."
+ sourceDir = currentDir
+ }
+
+ FileResolver fileResolver = getServices().get(FileResolver.class)
+ JavaExecAction action = new DefaultJavaExecAction(fileResolver)
+ action.setMain("frege.repl.FregeRepl")
+ action.workingDir = sourceDir ?: project.projectDir
+ action.standardInput = System.in
+ action.setClasspath(project.files(project.configurations.runtime ) + project.files(targetDir.absolutePath))
+
+ action.execute()
+ }
+
+} \ No newline at end of file