aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
diff options
context:
space:
mode:
authorThibault Gagnaux <tgagnaux@gmail.com>2021-12-20 20:48:17 +0100
committerThibault Gagnaux <tgagnaux@gmail.com>2021-12-21 11:22:55 +0100
commit992490f446720cd4cf4fb9aadff463b2328a8287 (patch)
treee3a19d9c3f79a6ba9620f05da2db8ba5421df9ff /src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
parentf923b4f8733003d55891dd4da25d849c81c4933c (diff)
downloadfrege-gradle-plugin-992490f446720cd4cf4fb9aadff463b2328a8287.tar.gz
frege-gradle-plugin-992490f446720cd4cf4fb9aadff463b2328a8287.tar.bz2
frege-gradle-plugin-992490f446720cd4cf4fb9aadff463b2328a8287.zip
feat: adds `replSource` property and command-line option
The `replSource` property specifies the frege source file that you want to load into the repl. It is excluded in the `fregeCompile` task so that we don't get two java class files (one from `compileFrege` and one from the fregeRepl `:l` command) that shadow each other on the classpath. As a result, we can make interactive changes to the `replSource` file and use the `:r` reload command to see them.
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java')
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
index e00b297..26c52c8 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java
@@ -20,8 +20,13 @@ public class FregePlugin implements Plugin<Project>
@Override
public void apply(Project project) {
- Configuration implementation = project.getConfigurations().create(FREGE_IMPLEMENTATION_SCOPE);
- FregeExtension extension = project.getExtensions().create(
+ Configuration implementation = project
+ .getConfigurations()
+ .create(FREGE_IMPLEMENTATION_SCOPE);
+
+ FregeExtension extension = project
+ .getExtensions()
+ .create(
FREGE_EXTENSION_NAME,
FregeExtension.class);
@@ -36,7 +41,7 @@ public class FregePlugin implements Plugin<Project>
task.getDownloadDir().set(extension.getCompilerDownloadDir());
});
- TaskProvider<CompileFregeTask> compileFregeTask =
+ TaskProvider<CompileFregeTask> compileFregeTask =
project.getTasks().register(
COMPILE_FREGE_TASK_NAME,
CompileFregeTask.class,
@@ -49,6 +54,7 @@ public class FregePlugin implements Plugin<Project>
task.getFregeOutputDir().set(extension.getOutputDir());
task.getFregeCompilerFlags().set(extension.getCompilerFlags());
task.getFregeDependencies().set(implementation.getAsPath());
+ task.getReplSource().set("");
}
);
@@ -71,6 +77,13 @@ public class FregePlugin implements Plugin<Project>
DependencyFregeTask.class,
task ->
{
+ task.dependsOn(compileFregeTask.map(
+ compileTask ->
+ {
+ compileTask.getReplSource().set(task.getReplSource());
+ return compileTask;
+ })
+ .get());
task.dependsOn(compileFregeTask);
task.getFregeCompilerJar().set(
setupFregeCompilerTask.get().getFregeCompilerOutputPath());
@@ -84,7 +97,14 @@ public class FregePlugin implements Plugin<Project>
ReplFregeTask.class,
task ->
{
- task.dependsOn(compileFregeTask);
+ task.getReplSource().set(extension.getReplModule());
+ task.dependsOn(compileFregeTask.map(
+ compileTask ->
+ {
+ compileTask.getReplSource().set(task.getReplSource());
+ return compileTask;
+ })
+ .get());
task.getFregeCompilerJar().set(
setupFregeCompilerTask.get().getFregeCompilerOutputPath());
task.getFregeOutputDir().set(extension.getOutputDir());